// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: social.proto

package io.grasscutter.net.proto.social;

/**
 * Protobuf type {@code SocialDetail}
 */
public final class SocialDetail extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:SocialDetail)
    SocialDetailOrBuilder {
private static final long serialVersionUID = 0L;
  // Use SocialDetail.newBuilder() to construct.
  private SocialDetail(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private SocialDetail() {
    lBKDGOEFEBC_ = "";
    ipCode_ = "";
    nickname_ = "";
    reservedList_ = emptyIntList();
    showNameCardIdList_ = emptyIntList();
    signature_ = "";
    showAvatarInfoList_ = java.util.Collections.emptyList();
    onlineId_ = "";
    remarkName_ = "";
    iJLHLCLLENE_ = "";
    dataVersion_ = 0;
    onlineState_ = 0;
    friendEnterHomeOption_ = 0;
    deviceInfo_ = 0;
  }

  @java.lang.Override
  @SuppressWarnings({"unused"})
  protected java.lang.Object newInstance(
      UnusedPrivateParameter unused) {
    return new SocialDetail();
  }

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet
  getUnknownFields() {
    return this.unknownFields;
  }
  private SocialDetail(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    if (extensionRegistry == null) {
      throw new java.lang.NullPointerException();
    }
    int mutable_bitField0_ = 0;
    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
        com.google.protobuf.UnknownFieldSet.newBuilder();
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          case 8: {

            uid_ = input.readUInt32();
            break;
          }
          case 18: {
            java.lang.String s = input.readStringRequireUtf8();

            nickname_ = s;
            break;
          }
          case 24: {

            level_ = input.readUInt32();
            break;
          }
          case 32: {

            avatarId_ = input.readUInt32();
            break;
          }
          case 42: {
            java.lang.String s = input.readStringRequireUtf8();

            signature_ = s;
            break;
          }
          case 50: {
            io.grasscutter.net.proto.define.Birthday.Builder subBuilder = null;
            if (birthday_ != null) {
              subBuilder = birthday_.toBuilder();
            }
            birthday_ = input.readMessage(io.grasscutter.net.proto.define.Birthday.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(birthday_);
              birthday_ = subBuilder.buildPartial();
            }

            break;
          }
          case 56: {

            worldLevel_ = input.readUInt32();
            break;
          }
          case 64: {
            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
              reservedList_ = newIntList();
              mutable_bitField0_ |= 0x00000001;
            }
            reservedList_.addInt(input.readUInt32());
            break;
          }
          case 66: {
            int length = input.readRawVarint32();
            int limit = input.pushLimit(length);
            if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
              reservedList_ = newIntList();
              mutable_bitField0_ |= 0x00000001;
            }
            while (input.getBytesUntilLimit() > 0) {
              reservedList_.addInt(input.readUInt32());
            }
            input.popLimit(limit);
            break;
          }
          case 72: {
            int rawValue = input.readEnum();

            onlineState_ = rawValue;
            break;
          }
          case 80: {

            param_ = input.readUInt32();
            break;
          }
          case 88: {

            isFriend_ = input.readBool();
            break;
          }
          case 96: {

            isMpModeAvailable_ = input.readBool();
            break;
          }
          case 106: {
            java.lang.String s = input.readStringRequireUtf8();

            onlineId_ = s;
            break;
          }
          case 112: {

            nameCardId_ = input.readUInt32();
            break;
          }
          case 120: {

            isInBlacklist_ = input.readBool();
            break;
          }
          case 128: {

            isChatNoDisturb_ = input.readBool();
            break;
          }
          case 138: {
            java.lang.String s = input.readStringRequireUtf8();

            remarkName_ = s;
            break;
          }
          case 144: {

            finishAchievementNum_ = input.readUInt32();
            break;
          }
          case 152: {

            towerFloorIndex_ = input.readUInt32();
            break;
          }
          case 160: {

            towerLevelIndex_ = input.readUInt32();
            break;
          }
          case 168: {

            isShowAvatar_ = input.readBool();
            break;
          }
          case 178: {
            if (!((mutable_bitField0_ & 0x00000004) != 0)) {
              showAvatarInfoList_ = new java.util.ArrayList<io.grasscutter.net.proto.social.SocialShowAvatarInfo>();
              mutable_bitField0_ |= 0x00000004;
            }
            showAvatarInfoList_.add(
                input.readMessage(io.grasscutter.net.proto.social.SocialShowAvatarInfo.parser(), extensionRegistry));
            break;
          }
          case 184: {
            if (!((mutable_bitField0_ & 0x00000002) != 0)) {
              showNameCardIdList_ = newIntList();
              mutable_bitField0_ |= 0x00000002;
            }
            showNameCardIdList_.addInt(input.readUInt32());
            break;
          }
          case 186: {
            int length = input.readRawVarint32();
            int limit = input.pushLimit(length);
            if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
              showNameCardIdList_ = newIntList();
              mutable_bitField0_ |= 0x00000002;
            }
            while (input.getBytesUntilLimit() > 0) {
              showNameCardIdList_.addInt(input.readUInt32());
            }
            input.popLimit(limit);
            break;
          }
          case 192: {
            int rawValue = input.readEnum();

            friendEnterHomeOption_ = rawValue;
            break;
          }
          case 202: {
            io.grasscutter.net.proto.define.ProfilePicture.Builder subBuilder = null;
            if (profilePicture_ != null) {
              subBuilder = profilePicture_.toBuilder();
            }
            profilePicture_ = input.readMessage(io.grasscutter.net.proto.define.ProfilePicture.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(profilePicture_);
              profilePicture_ = subBuilder.buildPartial();
            }

            break;
          }
          case 210: {
            java.lang.String s = input.readStringRequireUtf8();

            ipCode_ = s;
            break;
          }
          case 216: {

            hAINNIIMJAN_ = input.readUInt32();
            break;
          }
          case 224: {

            mBBJBOEPGHD_ = input.readUInt32();
            break;
          }
          case 234: {
            java.lang.String s = input.readStringRequireUtf8();

            iJLHLCLLENE_ = s;
            break;
          }
          case 242: {
            java.lang.String s = input.readStringRequireUtf8();

            lBKDGOEFEBC_ = s;
            break;
          }
          case 248: {
            int rawValue = input.readEnum();

            deviceInfo_ = rawValue;
            break;
          }
          case 256: {

            hNLBJEPHJHL_ = input.readUInt32();
            break;
          }
          case 264: {

            pKCNAFAFFGD_ = input.readBool();
            break;
          }
          case 272: {

            cEMDJIIPNKB_ = input.readUInt32();
            break;
          }
          case 280: {

            eFFAAOKCJBC_ = input.readUInt32();
            break;
          }
          case 288: {
            int rawValue = input.readEnum();

            dataVersion_ = rawValue;
            break;
          }
          default: {
            if (!parseUnknownField(
                input, unknownFields, extensionRegistry, tag)) {
              done = true;
            }
            break;
          }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(
          e).setUnfinishedMessage(this);
    } finally {
      if (((mutable_bitField0_ & 0x00000001) != 0)) {
        reservedList_.makeImmutable(); // C
      }
      if (((mutable_bitField0_ & 0x00000004) != 0)) {
        showAvatarInfoList_ = java.util.Collections.unmodifiableList(showAvatarInfoList_);
      }
      if (((mutable_bitField0_ & 0x00000002) != 0)) {
        showNameCardIdList_.makeImmutable(); // C
      }
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }
  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return io.grasscutter.net.proto.social.Social.internal_static_SocialDetail_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return io.grasscutter.net.proto.social.Social.internal_static_SocialDetail_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            io.grasscutter.net.proto.social.SocialDetail.class, io.grasscutter.net.proto.social.SocialDetail.Builder.class);
  }

  public static final int LBKDGOEFEBC_FIELD_NUMBER = 30;
  private volatile java.lang.Object lBKDGOEFEBC_;
  /**
   * <code>string LBKDGOEFEBC = 30;</code>
   * @return The lBKDGOEFEBC.
   */
  @java.lang.Override
  public java.lang.String getLBKDGOEFEBC() {
    java.lang.Object ref = lBKDGOEFEBC_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      lBKDGOEFEBC_ = s;
      return s;
    }
  }
  /**
   * <code>string LBKDGOEFEBC = 30;</code>
   * @return The bytes for lBKDGOEFEBC.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString
      getLBKDGOEFEBCBytes() {
    java.lang.Object ref = lBKDGOEFEBC_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      lBKDGOEFEBC_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int IP_CODE_FIELD_NUMBER = 26;
  private volatile java.lang.Object ipCode_;
  /**
   * <code>string ip_code = 26;</code>
   * @return The ipCode.
   */
  @java.lang.Override
  public java.lang.String getIpCode() {
    java.lang.Object ref = ipCode_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      ipCode_ = s;
      return s;
    }
  }
  /**
   * <code>string ip_code = 26;</code>
   * @return The bytes for ipCode.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString
      getIpCodeBytes() {
    java.lang.Object ref = ipCode_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      ipCode_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int NICKNAME_FIELD_NUMBER = 2;
  private volatile java.lang.Object nickname_;
  /**
   * <code>string nickname = 2;</code>
   * @return The nickname.
   */
  @java.lang.Override
  public java.lang.String getNickname() {
    java.lang.Object ref = nickname_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      nickname_ = s;
      return s;
    }
  }
  /**
   * <code>string nickname = 2;</code>
   * @return The bytes for nickname.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString
      getNicknameBytes() {
    java.lang.Object ref = nickname_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      nickname_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int RESERVED_LIST_FIELD_NUMBER = 8;
  private com.google.protobuf.Internal.IntList reservedList_;
  /**
   * <code>repeated uint32 reserved_list = 8;</code>
   * @return A list containing the reservedList.
   */
  @java.lang.Override
  public java.util.List<java.lang.Integer>
      getReservedListList() {
    return reservedList_;
  }
  /**
   * <code>repeated uint32 reserved_list = 8;</code>
   * @return The count of reservedList.
   */
  public int getReservedListCount() {
    return reservedList_.size();
  }
  /**
   * <code>repeated uint32 reserved_list = 8;</code>
   * @param index The index of the element to return.
   * @return The reservedList at the given index.
   */
  public int getReservedList(int index) {
    return reservedList_.getInt(index);
  }
  private int reservedListMemoizedSerializedSize = -1;

  public static final int SHOW_NAME_CARD_ID_LIST_FIELD_NUMBER = 23;
  private com.google.protobuf.Internal.IntList showNameCardIdList_;
  /**
   * <code>repeated uint32 show_name_card_id_list = 23;</code>
   * @return A list containing the showNameCardIdList.
   */
  @java.lang.Override
  public java.util.List<java.lang.Integer>
      getShowNameCardIdListList() {
    return showNameCardIdList_;
  }
  /**
   * <code>repeated uint32 show_name_card_id_list = 23;</code>
   * @return The count of showNameCardIdList.
   */
  public int getShowNameCardIdListCount() {
    return showNameCardIdList_.size();
  }
  /**
   * <code>repeated uint32 show_name_card_id_list = 23;</code>
   * @param index The index of the element to return.
   * @return The showNameCardIdList at the given index.
   */
  public int getShowNameCardIdList(int index) {
    return showNameCardIdList_.getInt(index);
  }
  private int showNameCardIdListMemoizedSerializedSize = -1;

  public static final int PROFILE_PICTURE_FIELD_NUMBER = 25;
  private io.grasscutter.net.proto.define.ProfilePicture profilePicture_;
  /**
   * <code>.ProfilePicture profile_picture = 25;</code>
   * @return Whether the profilePicture field is set.
   */
  @java.lang.Override
  public boolean hasProfilePicture() {
    return profilePicture_ != null;
  }
  /**
   * <code>.ProfilePicture profile_picture = 25;</code>
   * @return The profilePicture.
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.ProfilePicture getProfilePicture() {
    return profilePicture_ == null ? io.grasscutter.net.proto.define.ProfilePicture.getDefaultInstance() : profilePicture_;
  }
  /**
   * <code>.ProfilePicture profile_picture = 25;</code>
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.ProfilePictureOrBuilder getProfilePictureOrBuilder() {
    return getProfilePicture();
  }

  public static final int SIGNATURE_FIELD_NUMBER = 5;
  private volatile java.lang.Object signature_;
  /**
   * <code>string signature = 5;</code>
   * @return The signature.
   */
  @java.lang.Override
  public java.lang.String getSignature() {
    java.lang.Object ref = signature_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      signature_ = s;
      return s;
    }
  }
  /**
   * <code>string signature = 5;</code>
   * @return The bytes for signature.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString
      getSignatureBytes() {
    java.lang.Object ref = signature_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      signature_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int BIRTHDAY_FIELD_NUMBER = 6;
  private io.grasscutter.net.proto.define.Birthday birthday_;
  /**
   * <code>.Birthday birthday = 6;</code>
   * @return Whether the birthday field is set.
   */
  @java.lang.Override
  public boolean hasBirthday() {
    return birthday_ != null;
  }
  /**
   * <code>.Birthday birthday = 6;</code>
   * @return The birthday.
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.Birthday getBirthday() {
    return birthday_ == null ? io.grasscutter.net.proto.define.Birthday.getDefaultInstance() : birthday_;
  }
  /**
   * <code>.Birthday birthday = 6;</code>
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.BirthdayOrBuilder getBirthdayOrBuilder() {
    return getBirthday();
  }

  public static final int SHOW_AVATAR_INFO_LIST_FIELD_NUMBER = 22;
  private java.util.List<io.grasscutter.net.proto.social.SocialShowAvatarInfo> showAvatarInfoList_;
  /**
   * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
   */
  @java.lang.Override
  public java.util.List<io.grasscutter.net.proto.social.SocialShowAvatarInfo> getShowAvatarInfoListList() {
    return showAvatarInfoList_;
  }
  /**
   * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
   */
  @java.lang.Override
  public java.util.List<? extends io.grasscutter.net.proto.social.SocialShowAvatarInfoOrBuilder> 
      getShowAvatarInfoListOrBuilderList() {
    return showAvatarInfoList_;
  }
  /**
   * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
   */
  @java.lang.Override
  public int getShowAvatarInfoListCount() {
    return showAvatarInfoList_.size();
  }
  /**
   * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
   */
  @java.lang.Override
  public io.grasscutter.net.proto.social.SocialShowAvatarInfo getShowAvatarInfoList(int index) {
    return showAvatarInfoList_.get(index);
  }
  /**
   * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
   */
  @java.lang.Override
  public io.grasscutter.net.proto.social.SocialShowAvatarInfoOrBuilder getShowAvatarInfoListOrBuilder(
      int index) {
    return showAvatarInfoList_.get(index);
  }

  public static final int ONLINE_ID_FIELD_NUMBER = 13;
  private volatile java.lang.Object onlineId_;
  /**
   * <code>string online_id = 13;</code>
   * @return The onlineId.
   */
  @java.lang.Override
  public java.lang.String getOnlineId() {
    java.lang.Object ref = onlineId_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      onlineId_ = s;
      return s;
    }
  }
  /**
   * <code>string online_id = 13;</code>
   * @return The bytes for onlineId.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString
      getOnlineIdBytes() {
    java.lang.Object ref = onlineId_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      onlineId_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int REMARK_NAME_FIELD_NUMBER = 17;
  private volatile java.lang.Object remarkName_;
  /**
   * <code>string remark_name = 17;</code>
   * @return The remarkName.
   */
  @java.lang.Override
  public java.lang.String getRemarkName() {
    java.lang.Object ref = remarkName_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      remarkName_ = s;
      return s;
    }
  }
  /**
   * <code>string remark_name = 17;</code>
   * @return The bytes for remarkName.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString
      getRemarkNameBytes() {
    java.lang.Object ref = remarkName_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      remarkName_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int IJLHLCLLENE_FIELD_NUMBER = 29;
  private volatile java.lang.Object iJLHLCLLENE_;
  /**
   * <code>string IJLHLCLLENE = 29;</code>
   * @return The iJLHLCLLENE.
   */
  @java.lang.Override
  public java.lang.String getIJLHLCLLENE() {
    java.lang.Object ref = iJLHLCLLENE_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      iJLHLCLLENE_ = s;
      return s;
    }
  }
  /**
   * <code>string IJLHLCLLENE = 29;</code>
   * @return The bytes for iJLHLCLLENE.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString
      getIJLHLCLLENEBytes() {
    java.lang.Object ref = iJLHLCLLENE_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      iJLHLCLLENE_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int TOWER_FLOOR_INDEX_FIELD_NUMBER = 19;
  private int towerFloorIndex_;
  /**
   * <code>uint32 tower_floor_index = 19;</code>
   * @return The towerFloorIndex.
   */
  @java.lang.Override
  public int getTowerFloorIndex() {
    return towerFloorIndex_;
  }

  public static final int NAME_CARD_ID_FIELD_NUMBER = 14;
  private int nameCardId_;
  /**
   * <code>uint32 name_card_id = 14;</code>
   * @return The nameCardId.
   */
  @java.lang.Override
  public int getNameCardId() {
    return nameCardId_;
  }

  public static final int MBBJBOEPGHD_FIELD_NUMBER = 28;
  private int mBBJBOEPGHD_;
  /**
   * <code>uint32 MBBJBOEPGHD = 28;</code>
   * @return The mBBJBOEPGHD.
   */
  @java.lang.Override
  public int getMBBJBOEPGHD() {
    return mBBJBOEPGHD_;
  }

  public static final int WORLD_LEVEL_FIELD_NUMBER = 7;
  private int worldLevel_;
  /**
   * <code>uint32 world_level = 7;</code>
   * @return The worldLevel.
   */
  @java.lang.Override
  public int getWorldLevel() {
    return worldLevel_;
  }

  public static final int DATA_VERSION_FIELD_NUMBER = 36;
  private int dataVersion_;
  /**
   * <code>.GFLAAGCBNGM data_version = 36;</code>
   * @return The enum numeric value on the wire for dataVersion.
   */
  @java.lang.Override public int getDataVersionValue() {
    return dataVersion_;
  }
  /**
   * <code>.GFLAAGCBNGM data_version = 36;</code>
   * @return The dataVersion.
   */
  @java.lang.Override public io.grasscutter.net.proto.social.GFLAAGCBNGM getDataVersion() {
    @SuppressWarnings("deprecation")
    io.grasscutter.net.proto.social.GFLAAGCBNGM result = io.grasscutter.net.proto.social.GFLAAGCBNGM.valueOf(dataVersion_);
    return result == null ? io.grasscutter.net.proto.social.GFLAAGCBNGM.UNRECOGNIZED : result;
  }

  public static final int EFFAAOKCJBC_FIELD_NUMBER = 35;
  private int eFFAAOKCJBC_;
  /**
   * <code>uint32 EFFAAOKCJBC = 35;</code>
   * @return The eFFAAOKCJBC.
   */
  @java.lang.Override
  public int getEFFAAOKCJBC() {
    return eFFAAOKCJBC_;
  }

  public static final int LEVEL_FIELD_NUMBER = 3;
  private int level_;
  /**
   * <code>uint32 level = 3;</code>
   * @return The level.
   */
  @java.lang.Override
  public int getLevel() {
    return level_;
  }

  public static final int ONLINE_STATE_FIELD_NUMBER = 9;
  private int onlineState_;
  /**
   * <code>.FriendOnlineState online_state = 9;</code>
   * @return The enum numeric value on the wire for onlineState.
   */
  @java.lang.Override public int getOnlineStateValue() {
    return onlineState_;
  }
  /**
   * <code>.FriendOnlineState online_state = 9;</code>
   * @return The onlineState.
   */
  @java.lang.Override public io.grasscutter.net.proto.social.FriendOnlineState getOnlineState() {
    @SuppressWarnings("deprecation")
    io.grasscutter.net.proto.social.FriendOnlineState result = io.grasscutter.net.proto.social.FriendOnlineState.valueOf(onlineState_);
    return result == null ? io.grasscutter.net.proto.social.FriendOnlineState.UNRECOGNIZED : result;
  }

  public static final int IS_MP_MODE_AVAILABLE_FIELD_NUMBER = 12;
  private boolean isMpModeAvailable_;
  /**
   * <code>bool is_mp_mode_available = 12;</code>
   * @return The isMpModeAvailable.
   */
  @java.lang.Override
  public boolean getIsMpModeAvailable() {
    return isMpModeAvailable_;
  }

  public static final int IS_IN_BLACKLIST_FIELD_NUMBER = 15;
  private boolean isInBlacklist_;
  /**
   * <code>bool is_in_blacklist = 15;</code>
   * @return The isInBlacklist.
   */
  @java.lang.Override
  public boolean getIsInBlacklist() {
    return isInBlacklist_;
  }

  public static final int IS_SHOW_AVATAR_FIELD_NUMBER = 21;
  private boolean isShowAvatar_;
  /**
   * <code>bool is_show_avatar = 21;</code>
   * @return The isShowAvatar.
   */
  @java.lang.Override
  public boolean getIsShowAvatar() {
    return isShowAvatar_;
  }

  public static final int IS_CHAT_NO_DISTURB_FIELD_NUMBER = 16;
  private boolean isChatNoDisturb_;
  /**
   * <code>bool is_chat_no_disturb = 16;</code>
   * @return The isChatNoDisturb.
   */
  @java.lang.Override
  public boolean getIsChatNoDisturb() {
    return isChatNoDisturb_;
  }

  public static final int TOWER_LEVEL_INDEX_FIELD_NUMBER = 20;
  private int towerLevelIndex_;
  /**
   * <code>uint32 tower_level_index = 20;</code>
   * @return The towerLevelIndex.
   */
  @java.lang.Override
  public int getTowerLevelIndex() {
    return towerLevelIndex_;
  }

  public static final int PKCNAFAFFGD_FIELD_NUMBER = 33;
  private boolean pKCNAFAFFGD_;
  /**
   * <code>bool PKCNAFAFFGD = 33;</code>
   * @return The pKCNAFAFFGD.
   */
  @java.lang.Override
  public boolean getPKCNAFAFFGD() {
    return pKCNAFAFFGD_;
  }

  public static final int IS_FRIEND_FIELD_NUMBER = 11;
  private boolean isFriend_;
  /**
   * <code>bool is_friend = 11;</code>
   * @return The isFriend.
   */
  @java.lang.Override
  public boolean getIsFriend() {
    return isFriend_;
  }

  public static final int AVATAR_ID_FIELD_NUMBER = 4;
  private int avatarId_;
  /**
   * <code>uint32 avatar_id = 4;</code>
   * @return The avatarId.
   */
  @java.lang.Override
  public int getAvatarId() {
    return avatarId_;
  }

  public static final int UID_FIELD_NUMBER = 1;
  private int uid_;
  /**
   * <code>uint32 uid = 1;</code>
   * @return The uid.
   */
  @java.lang.Override
  public int getUid() {
    return uid_;
  }

  public static final int CEMDJIIPNKB_FIELD_NUMBER = 34;
  private int cEMDJIIPNKB_;
  /**
   * <code>uint32 CEMDJIIPNKB = 34;</code>
   * @return The cEMDJIIPNKB.
   */
  @java.lang.Override
  public int getCEMDJIIPNKB() {
    return cEMDJIIPNKB_;
  }

  public static final int FINISH_ACHIEVEMENT_NUM_FIELD_NUMBER = 18;
  private int finishAchievementNum_;
  /**
   * <code>uint32 finish_achievement_num = 18;</code>
   * @return The finishAchievementNum.
   */
  @java.lang.Override
  public int getFinishAchievementNum() {
    return finishAchievementNum_;
  }

  public static final int PARAM_FIELD_NUMBER = 10;
  private int param_;
  /**
   * <code>uint32 param = 10;</code>
   * @return The param.
   */
  @java.lang.Override
  public int getParam() {
    return param_;
  }

  public static final int HAINNIIMJAN_FIELD_NUMBER = 27;
  private int hAINNIIMJAN_;
  /**
   * <code>uint32 HAINNIIMJAN = 27;</code>
   * @return The hAINNIIMJAN.
   */
  @java.lang.Override
  public int getHAINNIIMJAN() {
    return hAINNIIMJAN_;
  }

  public static final int HNLBJEPHJHL_FIELD_NUMBER = 32;
  private int hNLBJEPHJHL_;
  /**
   * <code>uint32 HNLBJEPHJHL = 32;</code>
   * @return The hNLBJEPHJHL.
   */
  @java.lang.Override
  public int getHNLBJEPHJHL() {
    return hNLBJEPHJHL_;
  }

  public static final int FRIEND_ENTER_HOME_OPTION_FIELD_NUMBER = 24;
  private int friendEnterHomeOption_;
  /**
   * <code>.FriendEnterHomeOption friend_enter_home_option = 24;</code>
   * @return The enum numeric value on the wire for friendEnterHomeOption.
   */
  @java.lang.Override public int getFriendEnterHomeOptionValue() {
    return friendEnterHomeOption_;
  }
  /**
   * <code>.FriendEnterHomeOption friend_enter_home_option = 24;</code>
   * @return The friendEnterHomeOption.
   */
  @java.lang.Override public io.grasscutter.net.proto.define.FriendEnterHomeOption getFriendEnterHomeOption() {
    @SuppressWarnings("deprecation")
    io.grasscutter.net.proto.define.FriendEnterHomeOption result = io.grasscutter.net.proto.define.FriendEnterHomeOption.valueOf(friendEnterHomeOption_);
    return result == null ? io.grasscutter.net.proto.define.FriendEnterHomeOption.UNRECOGNIZED : result;
  }

  public static final int DEVICE_INFO_FIELD_NUMBER = 31;
  private int deviceInfo_;
  /**
   * <code>.NFONHFAMDNE device_info = 31;</code>
   * @return The enum numeric value on the wire for deviceInfo.
   */
  @java.lang.Override public int getDeviceInfoValue() {
    return deviceInfo_;
  }
  /**
   * <code>.NFONHFAMDNE device_info = 31;</code>
   * @return The deviceInfo.
   */
  @java.lang.Override public io.grasscutter.net.proto.social.NFONHFAMDNE getDeviceInfo() {
    @SuppressWarnings("deprecation")
    io.grasscutter.net.proto.social.NFONHFAMDNE result = io.grasscutter.net.proto.social.NFONHFAMDNE.valueOf(deviceInfo_);
    return result == null ? io.grasscutter.net.proto.social.NFONHFAMDNE.UNRECOGNIZED : result;
  }

  private byte memoizedIsInitialized = -1;
  @java.lang.Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    getSerializedSize();
    if (uid_ != 0) {
      output.writeUInt32(1, uid_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nickname_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 2, nickname_);
    }
    if (level_ != 0) {
      output.writeUInt32(3, level_);
    }
    if (avatarId_ != 0) {
      output.writeUInt32(4, avatarId_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(signature_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 5, signature_);
    }
    if (birthday_ != null) {
      output.writeMessage(6, getBirthday());
    }
    if (worldLevel_ != 0) {
      output.writeUInt32(7, worldLevel_);
    }
    if (getReservedListList().size() > 0) {
      output.writeUInt32NoTag(66);
      output.writeUInt32NoTag(reservedListMemoizedSerializedSize);
    }
    for (int i = 0; i < reservedList_.size(); i++) {
      output.writeUInt32NoTag(reservedList_.getInt(i));
    }
    if (onlineState_ != io.grasscutter.net.proto.social.FriendOnlineState.FriendOnlineState_FREIEND_DISCONNECT.getNumber()) {
      output.writeEnum(9, onlineState_);
    }
    if (param_ != 0) {
      output.writeUInt32(10, param_);
    }
    if (isFriend_ != false) {
      output.writeBool(11, isFriend_);
    }
    if (isMpModeAvailable_ != false) {
      output.writeBool(12, isMpModeAvailable_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(onlineId_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 13, onlineId_);
    }
    if (nameCardId_ != 0) {
      output.writeUInt32(14, nameCardId_);
    }
    if (isInBlacklist_ != false) {
      output.writeBool(15, isInBlacklist_);
    }
    if (isChatNoDisturb_ != false) {
      output.writeBool(16, isChatNoDisturb_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remarkName_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 17, remarkName_);
    }
    if (finishAchievementNum_ != 0) {
      output.writeUInt32(18, finishAchievementNum_);
    }
    if (towerFloorIndex_ != 0) {
      output.writeUInt32(19, towerFloorIndex_);
    }
    if (towerLevelIndex_ != 0) {
      output.writeUInt32(20, towerLevelIndex_);
    }
    if (isShowAvatar_ != false) {
      output.writeBool(21, isShowAvatar_);
    }
    for (int i = 0; i < showAvatarInfoList_.size(); i++) {
      output.writeMessage(22, showAvatarInfoList_.get(i));
    }
    if (getShowNameCardIdListList().size() > 0) {
      output.writeUInt32NoTag(186);
      output.writeUInt32NoTag(showNameCardIdListMemoizedSerializedSize);
    }
    for (int i = 0; i < showNameCardIdList_.size(); i++) {
      output.writeUInt32NoTag(showNameCardIdList_.getInt(i));
    }
    if (friendEnterHomeOption_ != io.grasscutter.net.proto.define.FriendEnterHomeOption.FriendEnterHomeOption_NEED_CONFIRM.getNumber()) {
      output.writeEnum(24, friendEnterHomeOption_);
    }
    if (profilePicture_ != null) {
      output.writeMessage(25, getProfilePicture());
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipCode_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 26, ipCode_);
    }
    if (hAINNIIMJAN_ != 0) {
      output.writeUInt32(27, hAINNIIMJAN_);
    }
    if (mBBJBOEPGHD_ != 0) {
      output.writeUInt32(28, mBBJBOEPGHD_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(iJLHLCLLENE_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 29, iJLHLCLLENE_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lBKDGOEFEBC_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 30, lBKDGOEFEBC_);
    }
    if (deviceInfo_ != io.grasscutter.net.proto.social.NFONHFAMDNE.NFONHFAMDNE_EDITOR.getNumber()) {
      output.writeEnum(31, deviceInfo_);
    }
    if (hNLBJEPHJHL_ != 0) {
      output.writeUInt32(32, hNLBJEPHJHL_);
    }
    if (pKCNAFAFFGD_ != false) {
      output.writeBool(33, pKCNAFAFFGD_);
    }
    if (cEMDJIIPNKB_ != 0) {
      output.writeUInt32(34, cEMDJIIPNKB_);
    }
    if (eFFAAOKCJBC_ != 0) {
      output.writeUInt32(35, eFFAAOKCJBC_);
    }
    if (dataVersion_ != io.grasscutter.net.proto.social.GFLAAGCBNGM.GFLAAGCBNGM_VERSION_NONE.getNumber()) {
      output.writeEnum(36, dataVersion_);
    }
    unknownFields.writeTo(output);
  }

  @java.lang.Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (uid_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(1, uid_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nickname_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, nickname_);
    }
    if (level_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(3, level_);
    }
    if (avatarId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(4, avatarId_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(signature_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, signature_);
    }
    if (birthday_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(6, getBirthday());
    }
    if (worldLevel_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(7, worldLevel_);
    }
    {
      int dataSize = 0;
      for (int i = 0; i < reservedList_.size(); i++) {
        dataSize += com.google.protobuf.CodedOutputStream
          .computeUInt32SizeNoTag(reservedList_.getInt(i));
      }
      size += dataSize;
      if (!getReservedListList().isEmpty()) {
        size += 1;
        size += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(dataSize);
      }
      reservedListMemoizedSerializedSize = dataSize;
    }
    if (onlineState_ != io.grasscutter.net.proto.social.FriendOnlineState.FriendOnlineState_FREIEND_DISCONNECT.getNumber()) {
      size += com.google.protobuf.CodedOutputStream
        .computeEnumSize(9, onlineState_);
    }
    if (param_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(10, param_);
    }
    if (isFriend_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(11, isFriend_);
    }
    if (isMpModeAvailable_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(12, isMpModeAvailable_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(onlineId_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, onlineId_);
    }
    if (nameCardId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(14, nameCardId_);
    }
    if (isInBlacklist_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(15, isInBlacklist_);
    }
    if (isChatNoDisturb_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(16, isChatNoDisturb_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remarkName_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(17, remarkName_);
    }
    if (finishAchievementNum_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(18, finishAchievementNum_);
    }
    if (towerFloorIndex_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(19, towerFloorIndex_);
    }
    if (towerLevelIndex_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(20, towerLevelIndex_);
    }
    if (isShowAvatar_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(21, isShowAvatar_);
    }
    for (int i = 0; i < showAvatarInfoList_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(22, showAvatarInfoList_.get(i));
    }
    {
      int dataSize = 0;
      for (int i = 0; i < showNameCardIdList_.size(); i++) {
        dataSize += com.google.protobuf.CodedOutputStream
          .computeUInt32SizeNoTag(showNameCardIdList_.getInt(i));
      }
      size += dataSize;
      if (!getShowNameCardIdListList().isEmpty()) {
        size += 2;
        size += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(dataSize);
      }
      showNameCardIdListMemoizedSerializedSize = dataSize;
    }
    if (friendEnterHomeOption_ != io.grasscutter.net.proto.define.FriendEnterHomeOption.FriendEnterHomeOption_NEED_CONFIRM.getNumber()) {
      size += com.google.protobuf.CodedOutputStream
        .computeEnumSize(24, friendEnterHomeOption_);
    }
    if (profilePicture_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(25, getProfilePicture());
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipCode_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(26, ipCode_);
    }
    if (hAINNIIMJAN_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(27, hAINNIIMJAN_);
    }
    if (mBBJBOEPGHD_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(28, mBBJBOEPGHD_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(iJLHLCLLENE_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(29, iJLHLCLLENE_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lBKDGOEFEBC_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(30, lBKDGOEFEBC_);
    }
    if (deviceInfo_ != io.grasscutter.net.proto.social.NFONHFAMDNE.NFONHFAMDNE_EDITOR.getNumber()) {
      size += com.google.protobuf.CodedOutputStream
        .computeEnumSize(31, deviceInfo_);
    }
    if (hNLBJEPHJHL_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(32, hNLBJEPHJHL_);
    }
    if (pKCNAFAFFGD_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(33, pKCNAFAFFGD_);
    }
    if (cEMDJIIPNKB_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(34, cEMDJIIPNKB_);
    }
    if (eFFAAOKCJBC_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(35, eFFAAOKCJBC_);
    }
    if (dataVersion_ != io.grasscutter.net.proto.social.GFLAAGCBNGM.GFLAAGCBNGM_VERSION_NONE.getNumber()) {
      size += com.google.protobuf.CodedOutputStream
        .computeEnumSize(36, dataVersion_);
    }
    size += unknownFields.getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof io.grasscutter.net.proto.social.SocialDetail)) {
      return super.equals(obj);
    }
    io.grasscutter.net.proto.social.SocialDetail other = (io.grasscutter.net.proto.social.SocialDetail) obj;

    if (!getLBKDGOEFEBC()
        .equals(other.getLBKDGOEFEBC())) return false;
    if (!getIpCode()
        .equals(other.getIpCode())) return false;
    if (!getNickname()
        .equals(other.getNickname())) return false;
    if (!getReservedListList()
        .equals(other.getReservedListList())) return false;
    if (!getShowNameCardIdListList()
        .equals(other.getShowNameCardIdListList())) return false;
    if (hasProfilePicture() != other.hasProfilePicture()) return false;
    if (hasProfilePicture()) {
      if (!getProfilePicture()
          .equals(other.getProfilePicture())) return false;
    }
    if (!getSignature()
        .equals(other.getSignature())) return false;
    if (hasBirthday() != other.hasBirthday()) return false;
    if (hasBirthday()) {
      if (!getBirthday()
          .equals(other.getBirthday())) return false;
    }
    if (!getShowAvatarInfoListList()
        .equals(other.getShowAvatarInfoListList())) return false;
    if (!getOnlineId()
        .equals(other.getOnlineId())) return false;
    if (!getRemarkName()
        .equals(other.getRemarkName())) return false;
    if (!getIJLHLCLLENE()
        .equals(other.getIJLHLCLLENE())) return false;
    if (getTowerFloorIndex()
        != other.getTowerFloorIndex()) return false;
    if (getNameCardId()
        != other.getNameCardId()) return false;
    if (getMBBJBOEPGHD()
        != other.getMBBJBOEPGHD()) return false;
    if (getWorldLevel()
        != other.getWorldLevel()) return false;
    if (dataVersion_ != other.dataVersion_) return false;
    if (getEFFAAOKCJBC()
        != other.getEFFAAOKCJBC()) return false;
    if (getLevel()
        != other.getLevel()) return false;
    if (onlineState_ != other.onlineState_) return false;
    if (getIsMpModeAvailable()
        != other.getIsMpModeAvailable()) return false;
    if (getIsInBlacklist()
        != other.getIsInBlacklist()) return false;
    if (getIsShowAvatar()
        != other.getIsShowAvatar()) return false;
    if (getIsChatNoDisturb()
        != other.getIsChatNoDisturb()) return false;
    if (getTowerLevelIndex()
        != other.getTowerLevelIndex()) return false;
    if (getPKCNAFAFFGD()
        != other.getPKCNAFAFFGD()) return false;
    if (getIsFriend()
        != other.getIsFriend()) return false;
    if (getAvatarId()
        != other.getAvatarId()) return false;
    if (getUid()
        != other.getUid()) return false;
    if (getCEMDJIIPNKB()
        != other.getCEMDJIIPNKB()) return false;
    if (getFinishAchievementNum()
        != other.getFinishAchievementNum()) return false;
    if (getParam()
        != other.getParam()) return false;
    if (getHAINNIIMJAN()
        != other.getHAINNIIMJAN()) return false;
    if (getHNLBJEPHJHL()
        != other.getHNLBJEPHJHL()) return false;
    if (friendEnterHomeOption_ != other.friendEnterHomeOption_) return false;
    if (deviceInfo_ != other.deviceInfo_) return false;
    if (!unknownFields.equals(other.unknownFields)) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + LBKDGOEFEBC_FIELD_NUMBER;
    hash = (53 * hash) + getLBKDGOEFEBC().hashCode();
    hash = (37 * hash) + IP_CODE_FIELD_NUMBER;
    hash = (53 * hash) + getIpCode().hashCode();
    hash = (37 * hash) + NICKNAME_FIELD_NUMBER;
    hash = (53 * hash) + getNickname().hashCode();
    if (getReservedListCount() > 0) {
      hash = (37 * hash) + RESERVED_LIST_FIELD_NUMBER;
      hash = (53 * hash) + getReservedListList().hashCode();
    }
    if (getShowNameCardIdListCount() > 0) {
      hash = (37 * hash) + SHOW_NAME_CARD_ID_LIST_FIELD_NUMBER;
      hash = (53 * hash) + getShowNameCardIdListList().hashCode();
    }
    if (hasProfilePicture()) {
      hash = (37 * hash) + PROFILE_PICTURE_FIELD_NUMBER;
      hash = (53 * hash) + getProfilePicture().hashCode();
    }
    hash = (37 * hash) + SIGNATURE_FIELD_NUMBER;
    hash = (53 * hash) + getSignature().hashCode();
    if (hasBirthday()) {
      hash = (37 * hash) + BIRTHDAY_FIELD_NUMBER;
      hash = (53 * hash) + getBirthday().hashCode();
    }
    if (getShowAvatarInfoListCount() > 0) {
      hash = (37 * hash) + SHOW_AVATAR_INFO_LIST_FIELD_NUMBER;
      hash = (53 * hash) + getShowAvatarInfoListList().hashCode();
    }
    hash = (37 * hash) + ONLINE_ID_FIELD_NUMBER;
    hash = (53 * hash) + getOnlineId().hashCode();
    hash = (37 * hash) + REMARK_NAME_FIELD_NUMBER;
    hash = (53 * hash) + getRemarkName().hashCode();
    hash = (37 * hash) + IJLHLCLLENE_FIELD_NUMBER;
    hash = (53 * hash) + getIJLHLCLLENE().hashCode();
    hash = (37 * hash) + TOWER_FLOOR_INDEX_FIELD_NUMBER;
    hash = (53 * hash) + getTowerFloorIndex();
    hash = (37 * hash) + NAME_CARD_ID_FIELD_NUMBER;
    hash = (53 * hash) + getNameCardId();
    hash = (37 * hash) + MBBJBOEPGHD_FIELD_NUMBER;
    hash = (53 * hash) + getMBBJBOEPGHD();
    hash = (37 * hash) + WORLD_LEVEL_FIELD_NUMBER;
    hash = (53 * hash) + getWorldLevel();
    hash = (37 * hash) + DATA_VERSION_FIELD_NUMBER;
    hash = (53 * hash) + dataVersion_;
    hash = (37 * hash) + EFFAAOKCJBC_FIELD_NUMBER;
    hash = (53 * hash) + getEFFAAOKCJBC();
    hash = (37 * hash) + LEVEL_FIELD_NUMBER;
    hash = (53 * hash) + getLevel();
    hash = (37 * hash) + ONLINE_STATE_FIELD_NUMBER;
    hash = (53 * hash) + onlineState_;
    hash = (37 * hash) + IS_MP_MODE_AVAILABLE_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getIsMpModeAvailable());
    hash = (37 * hash) + IS_IN_BLACKLIST_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getIsInBlacklist());
    hash = (37 * hash) + IS_SHOW_AVATAR_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getIsShowAvatar());
    hash = (37 * hash) + IS_CHAT_NO_DISTURB_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getIsChatNoDisturb());
    hash = (37 * hash) + TOWER_LEVEL_INDEX_FIELD_NUMBER;
    hash = (53 * hash) + getTowerLevelIndex();
    hash = (37 * hash) + PKCNAFAFFGD_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getPKCNAFAFFGD());
    hash = (37 * hash) + IS_FRIEND_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getIsFriend());
    hash = (37 * hash) + AVATAR_ID_FIELD_NUMBER;
    hash = (53 * hash) + getAvatarId();
    hash = (37 * hash) + UID_FIELD_NUMBER;
    hash = (53 * hash) + getUid();
    hash = (37 * hash) + CEMDJIIPNKB_FIELD_NUMBER;
    hash = (53 * hash) + getCEMDJIIPNKB();
    hash = (37 * hash) + FINISH_ACHIEVEMENT_NUM_FIELD_NUMBER;
    hash = (53 * hash) + getFinishAchievementNum();
    hash = (37 * hash) + PARAM_FIELD_NUMBER;
    hash = (53 * hash) + getParam();
    hash = (37 * hash) + HAINNIIMJAN_FIELD_NUMBER;
    hash = (53 * hash) + getHAINNIIMJAN();
    hash = (37 * hash) + HNLBJEPHJHL_FIELD_NUMBER;
    hash = (53 * hash) + getHNLBJEPHJHL();
    hash = (37 * hash) + FRIEND_ENTER_HOME_OPTION_FIELD_NUMBER;
    hash = (53 * hash) + friendEnterHomeOption_;
    hash = (37 * hash) + DEVICE_INFO_FIELD_NUMBER;
    hash = (53 * hash) + deviceInfo_;
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static io.grasscutter.net.proto.social.SocialDetail parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  @java.lang.Override
  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(io.grasscutter.net.proto.social.SocialDetail prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(
      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * Protobuf type {@code SocialDetail}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:SocialDetail)
      io.grasscutter.net.proto.social.SocialDetailOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grasscutter.net.proto.social.Social.internal_static_SocialDetail_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grasscutter.net.proto.social.Social.internal_static_SocialDetail_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grasscutter.net.proto.social.SocialDetail.class, io.grasscutter.net.proto.social.SocialDetail.Builder.class);
    }

    // Construct using io.grasscutter.net.proto.social.SocialDetail.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
        getShowAvatarInfoListFieldBuilder();
      }
    }
    @java.lang.Override
    public Builder clear() {
      super.clear();
      lBKDGOEFEBC_ = "";

      ipCode_ = "";

      nickname_ = "";

      reservedList_ = emptyIntList();
      bitField0_ = (bitField0_ & ~0x00000001);
      showNameCardIdList_ = emptyIntList();
      bitField0_ = (bitField0_ & ~0x00000002);
      if (profilePictureBuilder_ == null) {
        profilePicture_ = null;
      } else {
        profilePicture_ = null;
        profilePictureBuilder_ = null;
      }
      signature_ = "";

      if (birthdayBuilder_ == null) {
        birthday_ = null;
      } else {
        birthday_ = null;
        birthdayBuilder_ = null;
      }
      if (showAvatarInfoListBuilder_ == null) {
        showAvatarInfoList_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
      } else {
        showAvatarInfoListBuilder_.clear();
      }
      onlineId_ = "";

      remarkName_ = "";

      iJLHLCLLENE_ = "";

      towerFloorIndex_ = 0;

      nameCardId_ = 0;

      mBBJBOEPGHD_ = 0;

      worldLevel_ = 0;

      dataVersion_ = 0;

      eFFAAOKCJBC_ = 0;

      level_ = 0;

      onlineState_ = 0;

      isMpModeAvailable_ = false;

      isInBlacklist_ = false;

      isShowAvatar_ = false;

      isChatNoDisturb_ = false;

      towerLevelIndex_ = 0;

      pKCNAFAFFGD_ = false;

      isFriend_ = false;

      avatarId_ = 0;

      uid_ = 0;

      cEMDJIIPNKB_ = 0;

      finishAchievementNum_ = 0;

      param_ = 0;

      hAINNIIMJAN_ = 0;

      hNLBJEPHJHL_ = 0;

      friendEnterHomeOption_ = 0;

      deviceInfo_ = 0;

      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return io.grasscutter.net.proto.social.Social.internal_static_SocialDetail_descriptor;
    }

    @java.lang.Override
    public io.grasscutter.net.proto.social.SocialDetail getDefaultInstanceForType() {
      return io.grasscutter.net.proto.social.SocialDetail.getDefaultInstance();
    }

    @java.lang.Override
    public io.grasscutter.net.proto.social.SocialDetail build() {
      io.grasscutter.net.proto.social.SocialDetail result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public io.grasscutter.net.proto.social.SocialDetail buildPartial() {
      io.grasscutter.net.proto.social.SocialDetail result = new io.grasscutter.net.proto.social.SocialDetail(this);
      int from_bitField0_ = bitField0_;
      result.lBKDGOEFEBC_ = lBKDGOEFEBC_;
      result.ipCode_ = ipCode_;
      result.nickname_ = nickname_;
      if (((bitField0_ & 0x00000001) != 0)) {
        reservedList_.makeImmutable();
        bitField0_ = (bitField0_ & ~0x00000001);
      }
      result.reservedList_ = reservedList_;
      if (((bitField0_ & 0x00000002) != 0)) {
        showNameCardIdList_.makeImmutable();
        bitField0_ = (bitField0_ & ~0x00000002);
      }
      result.showNameCardIdList_ = showNameCardIdList_;
      if (profilePictureBuilder_ == null) {
        result.profilePicture_ = profilePicture_;
      } else {
        result.profilePicture_ = profilePictureBuilder_.build();
      }
      result.signature_ = signature_;
      if (birthdayBuilder_ == null) {
        result.birthday_ = birthday_;
      } else {
        result.birthday_ = birthdayBuilder_.build();
      }
      if (showAvatarInfoListBuilder_ == null) {
        if (((bitField0_ & 0x00000004) != 0)) {
          showAvatarInfoList_ = java.util.Collections.unmodifiableList(showAvatarInfoList_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.showAvatarInfoList_ = showAvatarInfoList_;
      } else {
        result.showAvatarInfoList_ = showAvatarInfoListBuilder_.build();
      }
      result.onlineId_ = onlineId_;
      result.remarkName_ = remarkName_;
      result.iJLHLCLLENE_ = iJLHLCLLENE_;
      result.towerFloorIndex_ = towerFloorIndex_;
      result.nameCardId_ = nameCardId_;
      result.mBBJBOEPGHD_ = mBBJBOEPGHD_;
      result.worldLevel_ = worldLevel_;
      result.dataVersion_ = dataVersion_;
      result.eFFAAOKCJBC_ = eFFAAOKCJBC_;
      result.level_ = level_;
      result.onlineState_ = onlineState_;
      result.isMpModeAvailable_ = isMpModeAvailable_;
      result.isInBlacklist_ = isInBlacklist_;
      result.isShowAvatar_ = isShowAvatar_;
      result.isChatNoDisturb_ = isChatNoDisturb_;
      result.towerLevelIndex_ = towerLevelIndex_;
      result.pKCNAFAFFGD_ = pKCNAFAFFGD_;
      result.isFriend_ = isFriend_;
      result.avatarId_ = avatarId_;
      result.uid_ = uid_;
      result.cEMDJIIPNKB_ = cEMDJIIPNKB_;
      result.finishAchievementNum_ = finishAchievementNum_;
      result.param_ = param_;
      result.hAINNIIMJAN_ = hAINNIIMJAN_;
      result.hNLBJEPHJHL_ = hNLBJEPHJHL_;
      result.friendEnterHomeOption_ = friendEnterHomeOption_;
      result.deviceInfo_ = deviceInfo_;
      onBuilt();
      return result;
    }

    @java.lang.Override
    public Builder clone() {
      return super.clone();
    }
    @java.lang.Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return super.setField(field, value);
    }
    @java.lang.Override
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }
    @java.lang.Override
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }
    @java.lang.Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, java.lang.Object value) {
      return super.setRepeatedField(field, index, value);
    }
    @java.lang.Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return super.addRepeatedField(field, value);
    }
    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof io.grasscutter.net.proto.social.SocialDetail) {
        return mergeFrom((io.grasscutter.net.proto.social.SocialDetail)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(io.grasscutter.net.proto.social.SocialDetail other) {
      if (other == io.grasscutter.net.proto.social.SocialDetail.getDefaultInstance()) return this;
      if (!other.getLBKDGOEFEBC().isEmpty()) {
        lBKDGOEFEBC_ = other.lBKDGOEFEBC_;
        onChanged();
      }
      if (!other.getIpCode().isEmpty()) {
        ipCode_ = other.ipCode_;
        onChanged();
      }
      if (!other.getNickname().isEmpty()) {
        nickname_ = other.nickname_;
        onChanged();
      }
      if (!other.reservedList_.isEmpty()) {
        if (reservedList_.isEmpty()) {
          reservedList_ = other.reservedList_;
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          ensureReservedListIsMutable();
          reservedList_.addAll(other.reservedList_);
        }
        onChanged();
      }
      if (!other.showNameCardIdList_.isEmpty()) {
        if (showNameCardIdList_.isEmpty()) {
          showNameCardIdList_ = other.showNameCardIdList_;
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          ensureShowNameCardIdListIsMutable();
          showNameCardIdList_.addAll(other.showNameCardIdList_);
        }
        onChanged();
      }
      if (other.hasProfilePicture()) {
        mergeProfilePicture(other.getProfilePicture());
      }
      if (!other.getSignature().isEmpty()) {
        signature_ = other.signature_;
        onChanged();
      }
      if (other.hasBirthday()) {
        mergeBirthday(other.getBirthday());
      }
      if (showAvatarInfoListBuilder_ == null) {
        if (!other.showAvatarInfoList_.isEmpty()) {
          if (showAvatarInfoList_.isEmpty()) {
            showAvatarInfoList_ = other.showAvatarInfoList_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureShowAvatarInfoListIsMutable();
            showAvatarInfoList_.addAll(other.showAvatarInfoList_);
          }
          onChanged();
        }
      } else {
        if (!other.showAvatarInfoList_.isEmpty()) {
          if (showAvatarInfoListBuilder_.isEmpty()) {
            showAvatarInfoListBuilder_.dispose();
            showAvatarInfoListBuilder_ = null;
            showAvatarInfoList_ = other.showAvatarInfoList_;
            bitField0_ = (bitField0_ & ~0x00000004);
            showAvatarInfoListBuilder_ = 
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getShowAvatarInfoListFieldBuilder() : null;
          } else {
            showAvatarInfoListBuilder_.addAllMessages(other.showAvatarInfoList_);
          }
        }
      }
      if (!other.getOnlineId().isEmpty()) {
        onlineId_ = other.onlineId_;
        onChanged();
      }
      if (!other.getRemarkName().isEmpty()) {
        remarkName_ = other.remarkName_;
        onChanged();
      }
      if (!other.getIJLHLCLLENE().isEmpty()) {
        iJLHLCLLENE_ = other.iJLHLCLLENE_;
        onChanged();
      }
      if (other.getTowerFloorIndex() != 0) {
        setTowerFloorIndex(other.getTowerFloorIndex());
      }
      if (other.getNameCardId() != 0) {
        setNameCardId(other.getNameCardId());
      }
      if (other.getMBBJBOEPGHD() != 0) {
        setMBBJBOEPGHD(other.getMBBJBOEPGHD());
      }
      if (other.getWorldLevel() != 0) {
        setWorldLevel(other.getWorldLevel());
      }
      if (other.dataVersion_ != 0) {
        setDataVersionValue(other.getDataVersionValue());
      }
      if (other.getEFFAAOKCJBC() != 0) {
        setEFFAAOKCJBC(other.getEFFAAOKCJBC());
      }
      if (other.getLevel() != 0) {
        setLevel(other.getLevel());
      }
      if (other.onlineState_ != 0) {
        setOnlineStateValue(other.getOnlineStateValue());
      }
      if (other.getIsMpModeAvailable() != false) {
        setIsMpModeAvailable(other.getIsMpModeAvailable());
      }
      if (other.getIsInBlacklist() != false) {
        setIsInBlacklist(other.getIsInBlacklist());
      }
      if (other.getIsShowAvatar() != false) {
        setIsShowAvatar(other.getIsShowAvatar());
      }
      if (other.getIsChatNoDisturb() != false) {
        setIsChatNoDisturb(other.getIsChatNoDisturb());
      }
      if (other.getTowerLevelIndex() != 0) {
        setTowerLevelIndex(other.getTowerLevelIndex());
      }
      if (other.getPKCNAFAFFGD() != false) {
        setPKCNAFAFFGD(other.getPKCNAFAFFGD());
      }
      if (other.getIsFriend() != false) {
        setIsFriend(other.getIsFriend());
      }
      if (other.getAvatarId() != 0) {
        setAvatarId(other.getAvatarId());
      }
      if (other.getUid() != 0) {
        setUid(other.getUid());
      }
      if (other.getCEMDJIIPNKB() != 0) {
        setCEMDJIIPNKB(other.getCEMDJIIPNKB());
      }
      if (other.getFinishAchievementNum() != 0) {
        setFinishAchievementNum(other.getFinishAchievementNum());
      }
      if (other.getParam() != 0) {
        setParam(other.getParam());
      }
      if (other.getHAINNIIMJAN() != 0) {
        setHAINNIIMJAN(other.getHAINNIIMJAN());
      }
      if (other.getHNLBJEPHJHL() != 0) {
        setHNLBJEPHJHL(other.getHNLBJEPHJHL());
      }
      if (other.friendEnterHomeOption_ != 0) {
        setFriendEnterHomeOptionValue(other.getFriendEnterHomeOptionValue());
      }
      if (other.deviceInfo_ != 0) {
        setDeviceInfoValue(other.getDeviceInfoValue());
      }
      this.mergeUnknownFields(other.unknownFields);
      onChanged();
      return this;
    }

    @java.lang.Override
    public final boolean isInitialized() {
      return true;
    }

    @java.lang.Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      io.grasscutter.net.proto.social.SocialDetail parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (io.grasscutter.net.proto.social.SocialDetail) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }
    private int bitField0_;

    private java.lang.Object lBKDGOEFEBC_ = "";
    /**
     * <code>string LBKDGOEFEBC = 30;</code>
     * @return The lBKDGOEFEBC.
     */
    public java.lang.String getLBKDGOEFEBC() {
      java.lang.Object ref = lBKDGOEFEBC_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        lBKDGOEFEBC_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     * <code>string LBKDGOEFEBC = 30;</code>
     * @return The bytes for lBKDGOEFEBC.
     */
    public com.google.protobuf.ByteString
        getLBKDGOEFEBCBytes() {
      java.lang.Object ref = lBKDGOEFEBC_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lBKDGOEFEBC_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string LBKDGOEFEBC = 30;</code>
     * @param value The lBKDGOEFEBC to set.
     * @return This builder for chaining.
     */
    public Builder setLBKDGOEFEBC(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      lBKDGOEFEBC_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>string LBKDGOEFEBC = 30;</code>
     * @return This builder for chaining.
     */
    public Builder clearLBKDGOEFEBC() {
      
      lBKDGOEFEBC_ = getDefaultInstance().getLBKDGOEFEBC();
      onChanged();
      return this;
    }
    /**
     * <code>string LBKDGOEFEBC = 30;</code>
     * @param value The bytes for lBKDGOEFEBC to set.
     * @return This builder for chaining.
     */
    public Builder setLBKDGOEFEBCBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
      
      lBKDGOEFEBC_ = value;
      onChanged();
      return this;
    }

    private java.lang.Object ipCode_ = "";
    /**
     * <code>string ip_code = 26;</code>
     * @return The ipCode.
     */
    public java.lang.String getIpCode() {
      java.lang.Object ref = ipCode_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        ipCode_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     * <code>string ip_code = 26;</code>
     * @return The bytes for ipCode.
     */
    public com.google.protobuf.ByteString
        getIpCodeBytes() {
      java.lang.Object ref = ipCode_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ipCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string ip_code = 26;</code>
     * @param value The ipCode to set.
     * @return This builder for chaining.
     */
    public Builder setIpCode(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      ipCode_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>string ip_code = 26;</code>
     * @return This builder for chaining.
     */
    public Builder clearIpCode() {
      
      ipCode_ = getDefaultInstance().getIpCode();
      onChanged();
      return this;
    }
    /**
     * <code>string ip_code = 26;</code>
     * @param value The bytes for ipCode to set.
     * @return This builder for chaining.
     */
    public Builder setIpCodeBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
      
      ipCode_ = value;
      onChanged();
      return this;
    }

    private java.lang.Object nickname_ = "";
    /**
     * <code>string nickname = 2;</code>
     * @return The nickname.
     */
    public java.lang.String getNickname() {
      java.lang.Object ref = nickname_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        nickname_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     * <code>string nickname = 2;</code>
     * @return The bytes for nickname.
     */
    public com.google.protobuf.ByteString
        getNicknameBytes() {
      java.lang.Object ref = nickname_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nickname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string nickname = 2;</code>
     * @param value The nickname to set.
     * @return This builder for chaining.
     */
    public Builder setNickname(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      nickname_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>string nickname = 2;</code>
     * @return This builder for chaining.
     */
    public Builder clearNickname() {
      
      nickname_ = getDefaultInstance().getNickname();
      onChanged();
      return this;
    }
    /**
     * <code>string nickname = 2;</code>
     * @param value The bytes for nickname to set.
     * @return This builder for chaining.
     */
    public Builder setNicknameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
      
      nickname_ = value;
      onChanged();
      return this;
    }

    private com.google.protobuf.Internal.IntList reservedList_ = emptyIntList();
    private void ensureReservedListIsMutable() {
      if (!((bitField0_ & 0x00000001) != 0)) {
        reservedList_ = mutableCopy(reservedList_);
        bitField0_ |= 0x00000001;
       }
    }
    /**
     * <code>repeated uint32 reserved_list = 8;</code>
     * @return A list containing the reservedList.
     */
    public java.util.List<java.lang.Integer>
        getReservedListList() {
      return ((bitField0_ & 0x00000001) != 0) ?
               java.util.Collections.unmodifiableList(reservedList_) : reservedList_;
    }
    /**
     * <code>repeated uint32 reserved_list = 8;</code>
     * @return The count of reservedList.
     */
    public int getReservedListCount() {
      return reservedList_.size();
    }
    /**
     * <code>repeated uint32 reserved_list = 8;</code>
     * @param index The index of the element to return.
     * @return The reservedList at the given index.
     */
    public int getReservedList(int index) {
      return reservedList_.getInt(index);
    }
    /**
     * <code>repeated uint32 reserved_list = 8;</code>
     * @param index The index to set the value at.
     * @param value The reservedList to set.
     * @return This builder for chaining.
     */
    public Builder setReservedList(
        int index, int value) {
      ensureReservedListIsMutable();
      reservedList_.setInt(index, value);
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint32 reserved_list = 8;</code>
     * @param value The reservedList to add.
     * @return This builder for chaining.
     */
    public Builder addReservedList(int value) {
      ensureReservedListIsMutable();
      reservedList_.addInt(value);
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint32 reserved_list = 8;</code>
     * @param values The reservedList to add.
     * @return This builder for chaining.
     */
    public Builder addAllReservedList(
        java.lang.Iterable<? extends java.lang.Integer> values) {
      ensureReservedListIsMutable();
      com.google.protobuf.AbstractMessageLite.Builder.addAll(
          values, reservedList_);
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint32 reserved_list = 8;</code>
     * @return This builder for chaining.
     */
    public Builder clearReservedList() {
      reservedList_ = emptyIntList();
      bitField0_ = (bitField0_ & ~0x00000001);
      onChanged();
      return this;
    }

    private com.google.protobuf.Internal.IntList showNameCardIdList_ = emptyIntList();
    private void ensureShowNameCardIdListIsMutable() {
      if (!((bitField0_ & 0x00000002) != 0)) {
        showNameCardIdList_ = mutableCopy(showNameCardIdList_);
        bitField0_ |= 0x00000002;
       }
    }
    /**
     * <code>repeated uint32 show_name_card_id_list = 23;</code>
     * @return A list containing the showNameCardIdList.
     */
    public java.util.List<java.lang.Integer>
        getShowNameCardIdListList() {
      return ((bitField0_ & 0x00000002) != 0) ?
               java.util.Collections.unmodifiableList(showNameCardIdList_) : showNameCardIdList_;
    }
    /**
     * <code>repeated uint32 show_name_card_id_list = 23;</code>
     * @return The count of showNameCardIdList.
     */
    public int getShowNameCardIdListCount() {
      return showNameCardIdList_.size();
    }
    /**
     * <code>repeated uint32 show_name_card_id_list = 23;</code>
     * @param index The index of the element to return.
     * @return The showNameCardIdList at the given index.
     */
    public int getShowNameCardIdList(int index) {
      return showNameCardIdList_.getInt(index);
    }
    /**
     * <code>repeated uint32 show_name_card_id_list = 23;</code>
     * @param index The index to set the value at.
     * @param value The showNameCardIdList to set.
     * @return This builder for chaining.
     */
    public Builder setShowNameCardIdList(
        int index, int value) {
      ensureShowNameCardIdListIsMutable();
      showNameCardIdList_.setInt(index, value);
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint32 show_name_card_id_list = 23;</code>
     * @param value The showNameCardIdList to add.
     * @return This builder for chaining.
     */
    public Builder addShowNameCardIdList(int value) {
      ensureShowNameCardIdListIsMutable();
      showNameCardIdList_.addInt(value);
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint32 show_name_card_id_list = 23;</code>
     * @param values The showNameCardIdList to add.
     * @return This builder for chaining.
     */
    public Builder addAllShowNameCardIdList(
        java.lang.Iterable<? extends java.lang.Integer> values) {
      ensureShowNameCardIdListIsMutable();
      com.google.protobuf.AbstractMessageLite.Builder.addAll(
          values, showNameCardIdList_);
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint32 show_name_card_id_list = 23;</code>
     * @return This builder for chaining.
     */
    public Builder clearShowNameCardIdList() {
      showNameCardIdList_ = emptyIntList();
      bitField0_ = (bitField0_ & ~0x00000002);
      onChanged();
      return this;
    }

    private io.grasscutter.net.proto.define.ProfilePicture profilePicture_;
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.ProfilePicture, io.grasscutter.net.proto.define.ProfilePicture.Builder, io.grasscutter.net.proto.define.ProfilePictureOrBuilder> profilePictureBuilder_;
    /**
     * <code>.ProfilePicture profile_picture = 25;</code>
     * @return Whether the profilePicture field is set.
     */
    public boolean hasProfilePicture() {
      return profilePictureBuilder_ != null || profilePicture_ != null;
    }
    /**
     * <code>.ProfilePicture profile_picture = 25;</code>
     * @return The profilePicture.
     */
    public io.grasscutter.net.proto.define.ProfilePicture getProfilePicture() {
      if (profilePictureBuilder_ == null) {
        return profilePicture_ == null ? io.grasscutter.net.proto.define.ProfilePicture.getDefaultInstance() : profilePicture_;
      } else {
        return profilePictureBuilder_.getMessage();
      }
    }
    /**
     * <code>.ProfilePicture profile_picture = 25;</code>
     */
    public Builder setProfilePicture(io.grasscutter.net.proto.define.ProfilePicture value) {
      if (profilePictureBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        profilePicture_ = value;
        onChanged();
      } else {
        profilePictureBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <code>.ProfilePicture profile_picture = 25;</code>
     */
    public Builder setProfilePicture(
        io.grasscutter.net.proto.define.ProfilePicture.Builder builderForValue) {
      if (profilePictureBuilder_ == null) {
        profilePicture_ = builderForValue.build();
        onChanged();
      } else {
        profilePictureBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <code>.ProfilePicture profile_picture = 25;</code>
     */
    public Builder mergeProfilePicture(io.grasscutter.net.proto.define.ProfilePicture value) {
      if (profilePictureBuilder_ == null) {
        if (profilePicture_ != null) {
          profilePicture_ =
            io.grasscutter.net.proto.define.ProfilePicture.newBuilder(profilePicture_).mergeFrom(value).buildPartial();
        } else {
          profilePicture_ = value;
        }
        onChanged();
      } else {
        profilePictureBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <code>.ProfilePicture profile_picture = 25;</code>
     */
    public Builder clearProfilePicture() {
      if (profilePictureBuilder_ == null) {
        profilePicture_ = null;
        onChanged();
      } else {
        profilePicture_ = null;
        profilePictureBuilder_ = null;
      }

      return this;
    }
    /**
     * <code>.ProfilePicture profile_picture = 25;</code>
     */
    public io.grasscutter.net.proto.define.ProfilePicture.Builder getProfilePictureBuilder() {
      
      onChanged();
      return getProfilePictureFieldBuilder().getBuilder();
    }
    /**
     * <code>.ProfilePicture profile_picture = 25;</code>
     */
    public io.grasscutter.net.proto.define.ProfilePictureOrBuilder getProfilePictureOrBuilder() {
      if (profilePictureBuilder_ != null) {
        return profilePictureBuilder_.getMessageOrBuilder();
      } else {
        return profilePicture_ == null ?
            io.grasscutter.net.proto.define.ProfilePicture.getDefaultInstance() : profilePicture_;
      }
    }
    /**
     * <code>.ProfilePicture profile_picture = 25;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.ProfilePicture, io.grasscutter.net.proto.define.ProfilePicture.Builder, io.grasscutter.net.proto.define.ProfilePictureOrBuilder> 
        getProfilePictureFieldBuilder() {
      if (profilePictureBuilder_ == null) {
        profilePictureBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            io.grasscutter.net.proto.define.ProfilePicture, io.grasscutter.net.proto.define.ProfilePicture.Builder, io.grasscutter.net.proto.define.ProfilePictureOrBuilder>(
                getProfilePicture(),
                getParentForChildren(),
                isClean());
        profilePicture_ = null;
      }
      return profilePictureBuilder_;
    }

    private java.lang.Object signature_ = "";
    /**
     * <code>string signature = 5;</code>
     * @return The signature.
     */
    public java.lang.String getSignature() {
      java.lang.Object ref = signature_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        signature_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     * <code>string signature = 5;</code>
     * @return The bytes for signature.
     */
    public com.google.protobuf.ByteString
        getSignatureBytes() {
      java.lang.Object ref = signature_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        signature_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string signature = 5;</code>
     * @param value The signature to set.
     * @return This builder for chaining.
     */
    public Builder setSignature(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      signature_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>string signature = 5;</code>
     * @return This builder for chaining.
     */
    public Builder clearSignature() {
      
      signature_ = getDefaultInstance().getSignature();
      onChanged();
      return this;
    }
    /**
     * <code>string signature = 5;</code>
     * @param value The bytes for signature to set.
     * @return This builder for chaining.
     */
    public Builder setSignatureBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
      
      signature_ = value;
      onChanged();
      return this;
    }

    private io.grasscutter.net.proto.define.Birthday birthday_;
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.Birthday, io.grasscutter.net.proto.define.Birthday.Builder, io.grasscutter.net.proto.define.BirthdayOrBuilder> birthdayBuilder_;
    /**
     * <code>.Birthday birthday = 6;</code>
     * @return Whether the birthday field is set.
     */
    public boolean hasBirthday() {
      return birthdayBuilder_ != null || birthday_ != null;
    }
    /**
     * <code>.Birthday birthday = 6;</code>
     * @return The birthday.
     */
    public io.grasscutter.net.proto.define.Birthday getBirthday() {
      if (birthdayBuilder_ == null) {
        return birthday_ == null ? io.grasscutter.net.proto.define.Birthday.getDefaultInstance() : birthday_;
      } else {
        return birthdayBuilder_.getMessage();
      }
    }
    /**
     * <code>.Birthday birthday = 6;</code>
     */
    public Builder setBirthday(io.grasscutter.net.proto.define.Birthday value) {
      if (birthdayBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        birthday_ = value;
        onChanged();
      } else {
        birthdayBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <code>.Birthday birthday = 6;</code>
     */
    public Builder setBirthday(
        io.grasscutter.net.proto.define.Birthday.Builder builderForValue) {
      if (birthdayBuilder_ == null) {
        birthday_ = builderForValue.build();
        onChanged();
      } else {
        birthdayBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <code>.Birthday birthday = 6;</code>
     */
    public Builder mergeBirthday(io.grasscutter.net.proto.define.Birthday value) {
      if (birthdayBuilder_ == null) {
        if (birthday_ != null) {
          birthday_ =
            io.grasscutter.net.proto.define.Birthday.newBuilder(birthday_).mergeFrom(value).buildPartial();
        } else {
          birthday_ = value;
        }
        onChanged();
      } else {
        birthdayBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <code>.Birthday birthday = 6;</code>
     */
    public Builder clearBirthday() {
      if (birthdayBuilder_ == null) {
        birthday_ = null;
        onChanged();
      } else {
        birthday_ = null;
        birthdayBuilder_ = null;
      }

      return this;
    }
    /**
     * <code>.Birthday birthday = 6;</code>
     */
    public io.grasscutter.net.proto.define.Birthday.Builder getBirthdayBuilder() {
      
      onChanged();
      return getBirthdayFieldBuilder().getBuilder();
    }
    /**
     * <code>.Birthday birthday = 6;</code>
     */
    public io.grasscutter.net.proto.define.BirthdayOrBuilder getBirthdayOrBuilder() {
      if (birthdayBuilder_ != null) {
        return birthdayBuilder_.getMessageOrBuilder();
      } else {
        return birthday_ == null ?
            io.grasscutter.net.proto.define.Birthday.getDefaultInstance() : birthday_;
      }
    }
    /**
     * <code>.Birthday birthday = 6;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.Birthday, io.grasscutter.net.proto.define.Birthday.Builder, io.grasscutter.net.proto.define.BirthdayOrBuilder> 
        getBirthdayFieldBuilder() {
      if (birthdayBuilder_ == null) {
        birthdayBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            io.grasscutter.net.proto.define.Birthday, io.grasscutter.net.proto.define.Birthday.Builder, io.grasscutter.net.proto.define.BirthdayOrBuilder>(
                getBirthday(),
                getParentForChildren(),
                isClean());
        birthday_ = null;
      }
      return birthdayBuilder_;
    }

    private java.util.List<io.grasscutter.net.proto.social.SocialShowAvatarInfo> showAvatarInfoList_ =
      java.util.Collections.emptyList();
    private void ensureShowAvatarInfoListIsMutable() {
      if (!((bitField0_ & 0x00000004) != 0)) {
        showAvatarInfoList_ = new java.util.ArrayList<io.grasscutter.net.proto.social.SocialShowAvatarInfo>(showAvatarInfoList_);
        bitField0_ |= 0x00000004;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        io.grasscutter.net.proto.social.SocialShowAvatarInfo, io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder, io.grasscutter.net.proto.social.SocialShowAvatarInfoOrBuilder> showAvatarInfoListBuilder_;

    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public java.util.List<io.grasscutter.net.proto.social.SocialShowAvatarInfo> getShowAvatarInfoListList() {
      if (showAvatarInfoListBuilder_ == null) {
        return java.util.Collections.unmodifiableList(showAvatarInfoList_);
      } else {
        return showAvatarInfoListBuilder_.getMessageList();
      }
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public int getShowAvatarInfoListCount() {
      if (showAvatarInfoListBuilder_ == null) {
        return showAvatarInfoList_.size();
      } else {
        return showAvatarInfoListBuilder_.getCount();
      }
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public io.grasscutter.net.proto.social.SocialShowAvatarInfo getShowAvatarInfoList(int index) {
      if (showAvatarInfoListBuilder_ == null) {
        return showAvatarInfoList_.get(index);
      } else {
        return showAvatarInfoListBuilder_.getMessage(index);
      }
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public Builder setShowAvatarInfoList(
        int index, io.grasscutter.net.proto.social.SocialShowAvatarInfo value) {
      if (showAvatarInfoListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureShowAvatarInfoListIsMutable();
        showAvatarInfoList_.set(index, value);
        onChanged();
      } else {
        showAvatarInfoListBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public Builder setShowAvatarInfoList(
        int index, io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder builderForValue) {
      if (showAvatarInfoListBuilder_ == null) {
        ensureShowAvatarInfoListIsMutable();
        showAvatarInfoList_.set(index, builderForValue.build());
        onChanged();
      } else {
        showAvatarInfoListBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public Builder addShowAvatarInfoList(io.grasscutter.net.proto.social.SocialShowAvatarInfo value) {
      if (showAvatarInfoListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureShowAvatarInfoListIsMutable();
        showAvatarInfoList_.add(value);
        onChanged();
      } else {
        showAvatarInfoListBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public Builder addShowAvatarInfoList(
        int index, io.grasscutter.net.proto.social.SocialShowAvatarInfo value) {
      if (showAvatarInfoListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureShowAvatarInfoListIsMutable();
        showAvatarInfoList_.add(index, value);
        onChanged();
      } else {
        showAvatarInfoListBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public Builder addShowAvatarInfoList(
        io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder builderForValue) {
      if (showAvatarInfoListBuilder_ == null) {
        ensureShowAvatarInfoListIsMutable();
        showAvatarInfoList_.add(builderForValue.build());
        onChanged();
      } else {
        showAvatarInfoListBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public Builder addShowAvatarInfoList(
        int index, io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder builderForValue) {
      if (showAvatarInfoListBuilder_ == null) {
        ensureShowAvatarInfoListIsMutable();
        showAvatarInfoList_.add(index, builderForValue.build());
        onChanged();
      } else {
        showAvatarInfoListBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public Builder addAllShowAvatarInfoList(
        java.lang.Iterable<? extends io.grasscutter.net.proto.social.SocialShowAvatarInfo> values) {
      if (showAvatarInfoListBuilder_ == null) {
        ensureShowAvatarInfoListIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, showAvatarInfoList_);
        onChanged();
      } else {
        showAvatarInfoListBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public Builder clearShowAvatarInfoList() {
      if (showAvatarInfoListBuilder_ == null) {
        showAvatarInfoList_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
      } else {
        showAvatarInfoListBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public Builder removeShowAvatarInfoList(int index) {
      if (showAvatarInfoListBuilder_ == null) {
        ensureShowAvatarInfoListIsMutable();
        showAvatarInfoList_.remove(index);
        onChanged();
      } else {
        showAvatarInfoListBuilder_.remove(index);
      }
      return this;
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder getShowAvatarInfoListBuilder(
        int index) {
      return getShowAvatarInfoListFieldBuilder().getBuilder(index);
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public io.grasscutter.net.proto.social.SocialShowAvatarInfoOrBuilder getShowAvatarInfoListOrBuilder(
        int index) {
      if (showAvatarInfoListBuilder_ == null) {
        return showAvatarInfoList_.get(index);  } else {
        return showAvatarInfoListBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public java.util.List<? extends io.grasscutter.net.proto.social.SocialShowAvatarInfoOrBuilder> 
         getShowAvatarInfoListOrBuilderList() {
      if (showAvatarInfoListBuilder_ != null) {
        return showAvatarInfoListBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(showAvatarInfoList_);
      }
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder addShowAvatarInfoListBuilder() {
      return getShowAvatarInfoListFieldBuilder().addBuilder(
          io.grasscutter.net.proto.social.SocialShowAvatarInfo.getDefaultInstance());
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder addShowAvatarInfoListBuilder(
        int index) {
      return getShowAvatarInfoListFieldBuilder().addBuilder(
          index, io.grasscutter.net.proto.social.SocialShowAvatarInfo.getDefaultInstance());
    }
    /**
     * <code>repeated .SocialShowAvatarInfo show_avatar_info_list = 22;</code>
     */
    public java.util.List<io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder> 
         getShowAvatarInfoListBuilderList() {
      return getShowAvatarInfoListFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        io.grasscutter.net.proto.social.SocialShowAvatarInfo, io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder, io.grasscutter.net.proto.social.SocialShowAvatarInfoOrBuilder> 
        getShowAvatarInfoListFieldBuilder() {
      if (showAvatarInfoListBuilder_ == null) {
        showAvatarInfoListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            io.grasscutter.net.proto.social.SocialShowAvatarInfo, io.grasscutter.net.proto.social.SocialShowAvatarInfo.Builder, io.grasscutter.net.proto.social.SocialShowAvatarInfoOrBuilder>(
                showAvatarInfoList_,
                ((bitField0_ & 0x00000004) != 0),
                getParentForChildren(),
                isClean());
        showAvatarInfoList_ = null;
      }
      return showAvatarInfoListBuilder_;
    }

    private java.lang.Object onlineId_ = "";
    /**
     * <code>string online_id = 13;</code>
     * @return The onlineId.
     */
    public java.lang.String getOnlineId() {
      java.lang.Object ref = onlineId_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        onlineId_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     * <code>string online_id = 13;</code>
     * @return The bytes for onlineId.
     */
    public com.google.protobuf.ByteString
        getOnlineIdBytes() {
      java.lang.Object ref = onlineId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        onlineId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string online_id = 13;</code>
     * @param value The onlineId to set.
     * @return This builder for chaining.
     */
    public Builder setOnlineId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      onlineId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>string online_id = 13;</code>
     * @return This builder for chaining.
     */
    public Builder clearOnlineId() {
      
      onlineId_ = getDefaultInstance().getOnlineId();
      onChanged();
      return this;
    }
    /**
     * <code>string online_id = 13;</code>
     * @param value The bytes for onlineId to set.
     * @return This builder for chaining.
     */
    public Builder setOnlineIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
      
      onlineId_ = value;
      onChanged();
      return this;
    }

    private java.lang.Object remarkName_ = "";
    /**
     * <code>string remark_name = 17;</code>
     * @return The remarkName.
     */
    public java.lang.String getRemarkName() {
      java.lang.Object ref = remarkName_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        remarkName_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     * <code>string remark_name = 17;</code>
     * @return The bytes for remarkName.
     */
    public com.google.protobuf.ByteString
        getRemarkNameBytes() {
      java.lang.Object ref = remarkName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        remarkName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string remark_name = 17;</code>
     * @param value The remarkName to set.
     * @return This builder for chaining.
     */
    public Builder setRemarkName(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      remarkName_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>string remark_name = 17;</code>
     * @return This builder for chaining.
     */
    public Builder clearRemarkName() {
      
      remarkName_ = getDefaultInstance().getRemarkName();
      onChanged();
      return this;
    }
    /**
     * <code>string remark_name = 17;</code>
     * @param value The bytes for remarkName to set.
     * @return This builder for chaining.
     */
    public Builder setRemarkNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
      
      remarkName_ = value;
      onChanged();
      return this;
    }

    private java.lang.Object iJLHLCLLENE_ = "";
    /**
     * <code>string IJLHLCLLENE = 29;</code>
     * @return The iJLHLCLLENE.
     */
    public java.lang.String getIJLHLCLLENE() {
      java.lang.Object ref = iJLHLCLLENE_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        iJLHLCLLENE_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     * <code>string IJLHLCLLENE = 29;</code>
     * @return The bytes for iJLHLCLLENE.
     */
    public com.google.protobuf.ByteString
        getIJLHLCLLENEBytes() {
      java.lang.Object ref = iJLHLCLLENE_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        iJLHLCLLENE_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string IJLHLCLLENE = 29;</code>
     * @param value The iJLHLCLLENE to set.
     * @return This builder for chaining.
     */
    public Builder setIJLHLCLLENE(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      iJLHLCLLENE_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>string IJLHLCLLENE = 29;</code>
     * @return This builder for chaining.
     */
    public Builder clearIJLHLCLLENE() {
      
      iJLHLCLLENE_ = getDefaultInstance().getIJLHLCLLENE();
      onChanged();
      return this;
    }
    /**
     * <code>string IJLHLCLLENE = 29;</code>
     * @param value The bytes for iJLHLCLLENE to set.
     * @return This builder for chaining.
     */
    public Builder setIJLHLCLLENEBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
      
      iJLHLCLLENE_ = value;
      onChanged();
      return this;
    }

    private int towerFloorIndex_ ;
    /**
     * <code>uint32 tower_floor_index = 19;</code>
     * @return The towerFloorIndex.
     */
    @java.lang.Override
    public int getTowerFloorIndex() {
      return towerFloorIndex_;
    }
    /**
     * <code>uint32 tower_floor_index = 19;</code>
     * @param value The towerFloorIndex to set.
     * @return This builder for chaining.
     */
    public Builder setTowerFloorIndex(int value) {
      
      towerFloorIndex_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 tower_floor_index = 19;</code>
     * @return This builder for chaining.
     */
    public Builder clearTowerFloorIndex() {
      
      towerFloorIndex_ = 0;
      onChanged();
      return this;
    }

    private int nameCardId_ ;
    /**
     * <code>uint32 name_card_id = 14;</code>
     * @return The nameCardId.
     */
    @java.lang.Override
    public int getNameCardId() {
      return nameCardId_;
    }
    /**
     * <code>uint32 name_card_id = 14;</code>
     * @param value The nameCardId to set.
     * @return This builder for chaining.
     */
    public Builder setNameCardId(int value) {
      
      nameCardId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 name_card_id = 14;</code>
     * @return This builder for chaining.
     */
    public Builder clearNameCardId() {
      
      nameCardId_ = 0;
      onChanged();
      return this;
    }

    private int mBBJBOEPGHD_ ;
    /**
     * <code>uint32 MBBJBOEPGHD = 28;</code>
     * @return The mBBJBOEPGHD.
     */
    @java.lang.Override
    public int getMBBJBOEPGHD() {
      return mBBJBOEPGHD_;
    }
    /**
     * <code>uint32 MBBJBOEPGHD = 28;</code>
     * @param value The mBBJBOEPGHD to set.
     * @return This builder for chaining.
     */
    public Builder setMBBJBOEPGHD(int value) {
      
      mBBJBOEPGHD_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 MBBJBOEPGHD = 28;</code>
     * @return This builder for chaining.
     */
    public Builder clearMBBJBOEPGHD() {
      
      mBBJBOEPGHD_ = 0;
      onChanged();
      return this;
    }

    private int worldLevel_ ;
    /**
     * <code>uint32 world_level = 7;</code>
     * @return The worldLevel.
     */
    @java.lang.Override
    public int getWorldLevel() {
      return worldLevel_;
    }
    /**
     * <code>uint32 world_level = 7;</code>
     * @param value The worldLevel to set.
     * @return This builder for chaining.
     */
    public Builder setWorldLevel(int value) {
      
      worldLevel_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 world_level = 7;</code>
     * @return This builder for chaining.
     */
    public Builder clearWorldLevel() {
      
      worldLevel_ = 0;
      onChanged();
      return this;
    }

    private int dataVersion_ = 0;
    /**
     * <code>.GFLAAGCBNGM data_version = 36;</code>
     * @return The enum numeric value on the wire for dataVersion.
     */
    @java.lang.Override public int getDataVersionValue() {
      return dataVersion_;
    }
    /**
     * <code>.GFLAAGCBNGM data_version = 36;</code>
     * @param value The enum numeric value on the wire for dataVersion to set.
     * @return This builder for chaining.
     */
    public Builder setDataVersionValue(int value) {
      
      dataVersion_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>.GFLAAGCBNGM data_version = 36;</code>
     * @return The dataVersion.
     */
    @java.lang.Override
    public io.grasscutter.net.proto.social.GFLAAGCBNGM getDataVersion() {
      @SuppressWarnings("deprecation")
      io.grasscutter.net.proto.social.GFLAAGCBNGM result = io.grasscutter.net.proto.social.GFLAAGCBNGM.valueOf(dataVersion_);
      return result == null ? io.grasscutter.net.proto.social.GFLAAGCBNGM.UNRECOGNIZED : result;
    }
    /**
     * <code>.GFLAAGCBNGM data_version = 36;</code>
     * @param value The dataVersion to set.
     * @return This builder for chaining.
     */
    public Builder setDataVersion(io.grasscutter.net.proto.social.GFLAAGCBNGM value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      dataVersion_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     * <code>.GFLAAGCBNGM data_version = 36;</code>
     * @return This builder for chaining.
     */
    public Builder clearDataVersion() {
      
      dataVersion_ = 0;
      onChanged();
      return this;
    }

    private int eFFAAOKCJBC_ ;
    /**
     * <code>uint32 EFFAAOKCJBC = 35;</code>
     * @return The eFFAAOKCJBC.
     */
    @java.lang.Override
    public int getEFFAAOKCJBC() {
      return eFFAAOKCJBC_;
    }
    /**
     * <code>uint32 EFFAAOKCJBC = 35;</code>
     * @param value The eFFAAOKCJBC to set.
     * @return This builder for chaining.
     */
    public Builder setEFFAAOKCJBC(int value) {
      
      eFFAAOKCJBC_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 EFFAAOKCJBC = 35;</code>
     * @return This builder for chaining.
     */
    public Builder clearEFFAAOKCJBC() {
      
      eFFAAOKCJBC_ = 0;
      onChanged();
      return this;
    }

    private int level_ ;
    /**
     * <code>uint32 level = 3;</code>
     * @return The level.
     */
    @java.lang.Override
    public int getLevel() {
      return level_;
    }
    /**
     * <code>uint32 level = 3;</code>
     * @param value The level to set.
     * @return This builder for chaining.
     */
    public Builder setLevel(int value) {
      
      level_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 level = 3;</code>
     * @return This builder for chaining.
     */
    public Builder clearLevel() {
      
      level_ = 0;
      onChanged();
      return this;
    }

    private int onlineState_ = 0;
    /**
     * <code>.FriendOnlineState online_state = 9;</code>
     * @return The enum numeric value on the wire for onlineState.
     */
    @java.lang.Override public int getOnlineStateValue() {
      return onlineState_;
    }
    /**
     * <code>.FriendOnlineState online_state = 9;</code>
     * @param value The enum numeric value on the wire for onlineState to set.
     * @return This builder for chaining.
     */
    public Builder setOnlineStateValue(int value) {
      
      onlineState_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>.FriendOnlineState online_state = 9;</code>
     * @return The onlineState.
     */
    @java.lang.Override
    public io.grasscutter.net.proto.social.FriendOnlineState getOnlineState() {
      @SuppressWarnings("deprecation")
      io.grasscutter.net.proto.social.FriendOnlineState result = io.grasscutter.net.proto.social.FriendOnlineState.valueOf(onlineState_);
      return result == null ? io.grasscutter.net.proto.social.FriendOnlineState.UNRECOGNIZED : result;
    }
    /**
     * <code>.FriendOnlineState online_state = 9;</code>
     * @param value The onlineState to set.
     * @return This builder for chaining.
     */
    public Builder setOnlineState(io.grasscutter.net.proto.social.FriendOnlineState value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      onlineState_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     * <code>.FriendOnlineState online_state = 9;</code>
     * @return This builder for chaining.
     */
    public Builder clearOnlineState() {
      
      onlineState_ = 0;
      onChanged();
      return this;
    }

    private boolean isMpModeAvailable_ ;
    /**
     * <code>bool is_mp_mode_available = 12;</code>
     * @return The isMpModeAvailable.
     */
    @java.lang.Override
    public boolean getIsMpModeAvailable() {
      return isMpModeAvailable_;
    }
    /**
     * <code>bool is_mp_mode_available = 12;</code>
     * @param value The isMpModeAvailable to set.
     * @return This builder for chaining.
     */
    public Builder setIsMpModeAvailable(boolean value) {
      
      isMpModeAvailable_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>bool is_mp_mode_available = 12;</code>
     * @return This builder for chaining.
     */
    public Builder clearIsMpModeAvailable() {
      
      isMpModeAvailable_ = false;
      onChanged();
      return this;
    }

    private boolean isInBlacklist_ ;
    /**
     * <code>bool is_in_blacklist = 15;</code>
     * @return The isInBlacklist.
     */
    @java.lang.Override
    public boolean getIsInBlacklist() {
      return isInBlacklist_;
    }
    /**
     * <code>bool is_in_blacklist = 15;</code>
     * @param value The isInBlacklist to set.
     * @return This builder for chaining.
     */
    public Builder setIsInBlacklist(boolean value) {
      
      isInBlacklist_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>bool is_in_blacklist = 15;</code>
     * @return This builder for chaining.
     */
    public Builder clearIsInBlacklist() {
      
      isInBlacklist_ = false;
      onChanged();
      return this;
    }

    private boolean isShowAvatar_ ;
    /**
     * <code>bool is_show_avatar = 21;</code>
     * @return The isShowAvatar.
     */
    @java.lang.Override
    public boolean getIsShowAvatar() {
      return isShowAvatar_;
    }
    /**
     * <code>bool is_show_avatar = 21;</code>
     * @param value The isShowAvatar to set.
     * @return This builder for chaining.
     */
    public Builder setIsShowAvatar(boolean value) {
      
      isShowAvatar_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>bool is_show_avatar = 21;</code>
     * @return This builder for chaining.
     */
    public Builder clearIsShowAvatar() {
      
      isShowAvatar_ = false;
      onChanged();
      return this;
    }

    private boolean isChatNoDisturb_ ;
    /**
     * <code>bool is_chat_no_disturb = 16;</code>
     * @return The isChatNoDisturb.
     */
    @java.lang.Override
    public boolean getIsChatNoDisturb() {
      return isChatNoDisturb_;
    }
    /**
     * <code>bool is_chat_no_disturb = 16;</code>
     * @param value The isChatNoDisturb to set.
     * @return This builder for chaining.
     */
    public Builder setIsChatNoDisturb(boolean value) {
      
      isChatNoDisturb_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>bool is_chat_no_disturb = 16;</code>
     * @return This builder for chaining.
     */
    public Builder clearIsChatNoDisturb() {
      
      isChatNoDisturb_ = false;
      onChanged();
      return this;
    }

    private int towerLevelIndex_ ;
    /**
     * <code>uint32 tower_level_index = 20;</code>
     * @return The towerLevelIndex.
     */
    @java.lang.Override
    public int getTowerLevelIndex() {
      return towerLevelIndex_;
    }
    /**
     * <code>uint32 tower_level_index = 20;</code>
     * @param value The towerLevelIndex to set.
     * @return This builder for chaining.
     */
    public Builder setTowerLevelIndex(int value) {
      
      towerLevelIndex_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 tower_level_index = 20;</code>
     * @return This builder for chaining.
     */
    public Builder clearTowerLevelIndex() {
      
      towerLevelIndex_ = 0;
      onChanged();
      return this;
    }

    private boolean pKCNAFAFFGD_ ;
    /**
     * <code>bool PKCNAFAFFGD = 33;</code>
     * @return The pKCNAFAFFGD.
     */
    @java.lang.Override
    public boolean getPKCNAFAFFGD() {
      return pKCNAFAFFGD_;
    }
    /**
     * <code>bool PKCNAFAFFGD = 33;</code>
     * @param value The pKCNAFAFFGD to set.
     * @return This builder for chaining.
     */
    public Builder setPKCNAFAFFGD(boolean value) {
      
      pKCNAFAFFGD_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>bool PKCNAFAFFGD = 33;</code>
     * @return This builder for chaining.
     */
    public Builder clearPKCNAFAFFGD() {
      
      pKCNAFAFFGD_ = false;
      onChanged();
      return this;
    }

    private boolean isFriend_ ;
    /**
     * <code>bool is_friend = 11;</code>
     * @return The isFriend.
     */
    @java.lang.Override
    public boolean getIsFriend() {
      return isFriend_;
    }
    /**
     * <code>bool is_friend = 11;</code>
     * @param value The isFriend to set.
     * @return This builder for chaining.
     */
    public Builder setIsFriend(boolean value) {
      
      isFriend_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>bool is_friend = 11;</code>
     * @return This builder for chaining.
     */
    public Builder clearIsFriend() {
      
      isFriend_ = false;
      onChanged();
      return this;
    }

    private int avatarId_ ;
    /**
     * <code>uint32 avatar_id = 4;</code>
     * @return The avatarId.
     */
    @java.lang.Override
    public int getAvatarId() {
      return avatarId_;
    }
    /**
     * <code>uint32 avatar_id = 4;</code>
     * @param value The avatarId to set.
     * @return This builder for chaining.
     */
    public Builder setAvatarId(int value) {
      
      avatarId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 avatar_id = 4;</code>
     * @return This builder for chaining.
     */
    public Builder clearAvatarId() {
      
      avatarId_ = 0;
      onChanged();
      return this;
    }

    private int uid_ ;
    /**
     * <code>uint32 uid = 1;</code>
     * @return The uid.
     */
    @java.lang.Override
    public int getUid() {
      return uid_;
    }
    /**
     * <code>uint32 uid = 1;</code>
     * @param value The uid to set.
     * @return This builder for chaining.
     */
    public Builder setUid(int value) {
      
      uid_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 uid = 1;</code>
     * @return This builder for chaining.
     */
    public Builder clearUid() {
      
      uid_ = 0;
      onChanged();
      return this;
    }

    private int cEMDJIIPNKB_ ;
    /**
     * <code>uint32 CEMDJIIPNKB = 34;</code>
     * @return The cEMDJIIPNKB.
     */
    @java.lang.Override
    public int getCEMDJIIPNKB() {
      return cEMDJIIPNKB_;
    }
    /**
     * <code>uint32 CEMDJIIPNKB = 34;</code>
     * @param value The cEMDJIIPNKB to set.
     * @return This builder for chaining.
     */
    public Builder setCEMDJIIPNKB(int value) {
      
      cEMDJIIPNKB_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 CEMDJIIPNKB = 34;</code>
     * @return This builder for chaining.
     */
    public Builder clearCEMDJIIPNKB() {
      
      cEMDJIIPNKB_ = 0;
      onChanged();
      return this;
    }

    private int finishAchievementNum_ ;
    /**
     * <code>uint32 finish_achievement_num = 18;</code>
     * @return The finishAchievementNum.
     */
    @java.lang.Override
    public int getFinishAchievementNum() {
      return finishAchievementNum_;
    }
    /**
     * <code>uint32 finish_achievement_num = 18;</code>
     * @param value The finishAchievementNum to set.
     * @return This builder for chaining.
     */
    public Builder setFinishAchievementNum(int value) {
      
      finishAchievementNum_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 finish_achievement_num = 18;</code>
     * @return This builder for chaining.
     */
    public Builder clearFinishAchievementNum() {
      
      finishAchievementNum_ = 0;
      onChanged();
      return this;
    }

    private int param_ ;
    /**
     * <code>uint32 param = 10;</code>
     * @return The param.
     */
    @java.lang.Override
    public int getParam() {
      return param_;
    }
    /**
     * <code>uint32 param = 10;</code>
     * @param value The param to set.
     * @return This builder for chaining.
     */
    public Builder setParam(int value) {
      
      param_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 param = 10;</code>
     * @return This builder for chaining.
     */
    public Builder clearParam() {
      
      param_ = 0;
      onChanged();
      return this;
    }

    private int hAINNIIMJAN_ ;
    /**
     * <code>uint32 HAINNIIMJAN = 27;</code>
     * @return The hAINNIIMJAN.
     */
    @java.lang.Override
    public int getHAINNIIMJAN() {
      return hAINNIIMJAN_;
    }
    /**
     * <code>uint32 HAINNIIMJAN = 27;</code>
     * @param value The hAINNIIMJAN to set.
     * @return This builder for chaining.
     */
    public Builder setHAINNIIMJAN(int value) {
      
      hAINNIIMJAN_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 HAINNIIMJAN = 27;</code>
     * @return This builder for chaining.
     */
    public Builder clearHAINNIIMJAN() {
      
      hAINNIIMJAN_ = 0;
      onChanged();
      return this;
    }

    private int hNLBJEPHJHL_ ;
    /**
     * <code>uint32 HNLBJEPHJHL = 32;</code>
     * @return The hNLBJEPHJHL.
     */
    @java.lang.Override
    public int getHNLBJEPHJHL() {
      return hNLBJEPHJHL_;
    }
    /**
     * <code>uint32 HNLBJEPHJHL = 32;</code>
     * @param value The hNLBJEPHJHL to set.
     * @return This builder for chaining.
     */
    public Builder setHNLBJEPHJHL(int value) {
      
      hNLBJEPHJHL_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 HNLBJEPHJHL = 32;</code>
     * @return This builder for chaining.
     */
    public Builder clearHNLBJEPHJHL() {
      
      hNLBJEPHJHL_ = 0;
      onChanged();
      return this;
    }

    private int friendEnterHomeOption_ = 0;
    /**
     * <code>.FriendEnterHomeOption friend_enter_home_option = 24;</code>
     * @return The enum numeric value on the wire for friendEnterHomeOption.
     */
    @java.lang.Override public int getFriendEnterHomeOptionValue() {
      return friendEnterHomeOption_;
    }
    /**
     * <code>.FriendEnterHomeOption friend_enter_home_option = 24;</code>
     * @param value The enum numeric value on the wire for friendEnterHomeOption to set.
     * @return This builder for chaining.
     */
    public Builder setFriendEnterHomeOptionValue(int value) {
      
      friendEnterHomeOption_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>.FriendEnterHomeOption friend_enter_home_option = 24;</code>
     * @return The friendEnterHomeOption.
     */
    @java.lang.Override
    public io.grasscutter.net.proto.define.FriendEnterHomeOption getFriendEnterHomeOption() {
      @SuppressWarnings("deprecation")
      io.grasscutter.net.proto.define.FriendEnterHomeOption result = io.grasscutter.net.proto.define.FriendEnterHomeOption.valueOf(friendEnterHomeOption_);
      return result == null ? io.grasscutter.net.proto.define.FriendEnterHomeOption.UNRECOGNIZED : result;
    }
    /**
     * <code>.FriendEnterHomeOption friend_enter_home_option = 24;</code>
     * @param value The friendEnterHomeOption to set.
     * @return This builder for chaining.
     */
    public Builder setFriendEnterHomeOption(io.grasscutter.net.proto.define.FriendEnterHomeOption value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      friendEnterHomeOption_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     * <code>.FriendEnterHomeOption friend_enter_home_option = 24;</code>
     * @return This builder for chaining.
     */
    public Builder clearFriendEnterHomeOption() {
      
      friendEnterHomeOption_ = 0;
      onChanged();
      return this;
    }

    private int deviceInfo_ = 0;
    /**
     * <code>.NFONHFAMDNE device_info = 31;</code>
     * @return The enum numeric value on the wire for deviceInfo.
     */
    @java.lang.Override public int getDeviceInfoValue() {
      return deviceInfo_;
    }
    /**
     * <code>.NFONHFAMDNE device_info = 31;</code>
     * @param value The enum numeric value on the wire for deviceInfo to set.
     * @return This builder for chaining.
     */
    public Builder setDeviceInfoValue(int value) {
      
      deviceInfo_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>.NFONHFAMDNE device_info = 31;</code>
     * @return The deviceInfo.
     */
    @java.lang.Override
    public io.grasscutter.net.proto.social.NFONHFAMDNE getDeviceInfo() {
      @SuppressWarnings("deprecation")
      io.grasscutter.net.proto.social.NFONHFAMDNE result = io.grasscutter.net.proto.social.NFONHFAMDNE.valueOf(deviceInfo_);
      return result == null ? io.grasscutter.net.proto.social.NFONHFAMDNE.UNRECOGNIZED : result;
    }
    /**
     * <code>.NFONHFAMDNE device_info = 31;</code>
     * @param value The deviceInfo to set.
     * @return This builder for chaining.
     */
    public Builder setDeviceInfo(io.grasscutter.net.proto.social.NFONHFAMDNE value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      deviceInfo_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     * <code>.NFONHFAMDNE device_info = 31;</code>
     * @return This builder for chaining.
     */
    public Builder clearDeviceInfo() {
      
      deviceInfo_ = 0;
      onChanged();
      return this;
    }
    @java.lang.Override
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

    @java.lang.Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }


    // @@protoc_insertion_point(builder_scope:SocialDetail)
  }

  // @@protoc_insertion_point(class_scope:SocialDetail)
  private static final io.grasscutter.net.proto.social.SocialDetail DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new io.grasscutter.net.proto.social.SocialDetail();
  }

  public static io.grasscutter.net.proto.social.SocialDetail getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<SocialDetail>
      PARSER = new com.google.protobuf.AbstractParser<SocialDetail>() {
    @java.lang.Override
    public SocialDetail parsePartialFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return new SocialDetail(input, extensionRegistry);
    }
  };

  public static com.google.protobuf.Parser<SocialDetail> parser() {
    return PARSER;
  }

  @java.lang.Override
  public com.google.protobuf.Parser<SocialDetail> getParserForType() {
    return PARSER;
  }

  @java.lang.Override
  public io.grasscutter.net.proto.social.SocialDetail getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

