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

package cn.wildfirechat.proto;

public final class WFCMessage {
  private WFCMessage() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface AddFriendRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string target_uid = 1;
    /**
     * <code>required string target_uid = 1;</code>
     */
    boolean hasTargetUid();
    /**
     * <code>required string target_uid = 1;</code>
     */
    java.lang.String getTargetUid();
    /**
     * <code>required string target_uid = 1;</code>
     */
    com.google.protobuf.ByteString
        getTargetUidBytes();

    // required string reason = 2;
    /**
     * <code>required string reason = 2;</code>
     */
    boolean hasReason();
    /**
     * <code>required string reason = 2;</code>
     */
    java.lang.String getReason();
    /**
     * <code>required string reason = 2;</code>
     */
    com.google.protobuf.ByteString
        getReasonBytes();
  }
  /**
   * Protobuf type {@code AddFriendRequest}
   */
  public static final class AddFriendRequest extends
      com.google.protobuf.GeneratedMessage
      implements AddFriendRequestOrBuilder {
    // Use AddFriendRequest.newBuilder() to construct.
    private AddFriendRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private AddFriendRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final AddFriendRequest defaultInstance;
    public static AddFriendRequest getDefaultInstance() {
      return defaultInstance;
    }

    public AddFriendRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private AddFriendRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              targetUid_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              reason_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_AddFriendRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_AddFriendRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.AddFriendRequest.class, cn.wildfirechat.proto.WFCMessage.AddFriendRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<AddFriendRequest> PARSER =
        new com.google.protobuf.AbstractParser<AddFriendRequest>() {
      public AddFriendRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AddFriendRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string target_uid = 1;
    public static final int TARGET_UID_FIELD_NUMBER = 1;
    private java.lang.Object targetUid_;
    /**
     * <code>required string target_uid = 1;</code>
     */
    public boolean hasTargetUid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string target_uid = 1;</code>
     */
    public java.lang.String getTargetUid() {
      java.lang.Object ref = targetUid_;
      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();
        if (bs.isValidUtf8()) {
          targetUid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string target_uid = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTargetUidBytes() {
      java.lang.Object ref = targetUid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetUid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string reason = 2;
    public static final int REASON_FIELD_NUMBER = 2;
    private java.lang.Object reason_;
    /**
     * <code>required string reason = 2;</code>
     */
    public boolean hasReason() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string reason = 2;</code>
     */
    public java.lang.String getReason() {
      java.lang.Object ref = reason_;
      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();
        if (bs.isValidUtf8()) {
          reason_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string reason = 2;</code>
     */
    public com.google.protobuf.ByteString
        getReasonBytes() {
      java.lang.Object ref = reason_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        reason_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      targetUid_ = "";
      reason_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasTargetUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReason()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getTargetUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getReasonBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getTargetUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getReasonBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddFriendRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.AddFriendRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code AddFriendRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.AddFriendRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_AddFriendRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_AddFriendRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.AddFriendRequest.class, cn.wildfirechat.proto.WFCMessage.AddFriendRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.AddFriendRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        targetUid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        reason_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_AddFriendRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.AddFriendRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.AddFriendRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.AddFriendRequest build() {
        cn.wildfirechat.proto.WFCMessage.AddFriendRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.AddFriendRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.AddFriendRequest result = new cn.wildfirechat.proto.WFCMessage.AddFriendRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.targetUid_ = targetUid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.reason_ = reason_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.AddFriendRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.AddFriendRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.AddFriendRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.AddFriendRequest.getDefaultInstance()) return this;
        if (other.hasTargetUid()) {
          bitField0_ |= 0x00000001;
          targetUid_ = other.targetUid_;
          onChanged();
        }
        if (other.hasReason()) {
          bitField0_ |= 0x00000002;
          reason_ = other.reason_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTargetUid()) {
          
          return false;
        }
        if (!hasReason()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.AddFriendRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.AddFriendRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string target_uid = 1;
      private java.lang.Object targetUid_ = "";
      /**
       * <code>required string target_uid = 1;</code>
       */
      public boolean hasTargetUid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public java.lang.String getTargetUid() {
        java.lang.Object ref = targetUid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          targetUid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTargetUidBytes() {
        java.lang.Object ref = targetUid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetUid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public Builder setTargetUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        targetUid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public Builder clearTargetUid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetUid_ = getDefaultInstance().getTargetUid();
        onChanged();
        return this;
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public Builder setTargetUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        targetUid_ = value;
        onChanged();
        return this;
      }

      // required string reason = 2;
      private java.lang.Object reason_ = "";
      /**
       * <code>required string reason = 2;</code>
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string reason = 2;</code>
       */
      public java.lang.String getReason() {
        java.lang.Object ref = reason_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          reason_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string reason = 2;</code>
       */
      public com.google.protobuf.ByteString
          getReasonBytes() {
        java.lang.Object ref = reason_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reason_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string reason = 2;</code>
       */
      public Builder setReason(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        reason_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string reason = 2;</code>
       */
      public Builder clearReason() {
        bitField0_ = (bitField0_ & ~0x00000002);
        reason_ = getDefaultInstance().getReason();
        onChanged();
        return this;
      }
      /**
       * <code>required string reason = 2;</code>
       */
      public Builder setReasonBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        reason_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:AddFriendRequest)
    }

    static {
      defaultInstance = new AddFriendRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:AddFriendRequest)
  }

  public interface ConversationOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 type = 1;
    /**
     * <code>required int32 type = 1;</code>
     */
    boolean hasType();
    /**
     * <code>required int32 type = 1;</code>
     */
    int getType();

    // required string target = 2;
    /**
     * <code>required string target = 2;</code>
     */
    boolean hasTarget();
    /**
     * <code>required string target = 2;</code>
     */
    java.lang.String getTarget();
    /**
     * <code>required string target = 2;</code>
     */
    com.google.protobuf.ByteString
        getTargetBytes();

    // required int32 line = 3;
    /**
     * <code>required int32 line = 3;</code>
     */
    boolean hasLine();
    /**
     * <code>required int32 line = 3;</code>
     */
    int getLine();
  }
  /**
   * Protobuf type {@code Conversation}
   */
  public static final class Conversation extends
      com.google.protobuf.GeneratedMessage
      implements ConversationOrBuilder {
    // Use Conversation.newBuilder() to construct.
    private Conversation(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Conversation(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Conversation defaultInstance;
    public static Conversation getDefaultInstance() {
      return defaultInstance;
    }

    public Conversation getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Conversation(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              type_ = input.readInt32();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              target_ = input.readBytes();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              line_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Conversation_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Conversation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.Conversation.class, cn.wildfirechat.proto.WFCMessage.Conversation.Builder.class);
    }

    public static com.google.protobuf.Parser<Conversation> PARSER =
        new com.google.protobuf.AbstractParser<Conversation>() {
      public Conversation parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Conversation(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int32 type = 1;
    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_;
    /**
     * <code>required int32 type = 1;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 type = 1;</code>
     */
    public int getType() {
      return type_;
    }

    // required string target = 2;
    public static final int TARGET_FIELD_NUMBER = 2;
    private java.lang.Object target_;
    /**
     * <code>required string target = 2;</code>
     */
    public boolean hasTarget() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string target = 2;</code>
     */
    public java.lang.String getTarget() {
      java.lang.Object ref = target_;
      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();
        if (bs.isValidUtf8()) {
          target_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string target = 2;</code>
     */
    public com.google.protobuf.ByteString
        getTargetBytes() {
      java.lang.Object ref = target_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        target_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 line = 3;
    public static final int LINE_FIELD_NUMBER = 3;
    private int line_;
    /**
     * <code>required int32 line = 3;</code>
     */
    public boolean hasLine() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int32 line = 3;</code>
     */
    public int getLine() {
      return line_;
    }

    private void initFields() {
      type_ = 0;
      target_ = "";
      line_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTarget()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLine()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getTargetBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, line_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getTargetBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, line_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.Conversation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Conversation parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Conversation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Conversation parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Conversation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Conversation parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Conversation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Conversation parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Conversation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Conversation parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.Conversation prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Conversation}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ConversationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Conversation_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Conversation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.Conversation.class, cn.wildfirechat.proto.WFCMessage.Conversation.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.Conversation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        target_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        line_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Conversation_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.Conversation getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.Conversation.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.Conversation build() {
        cn.wildfirechat.proto.WFCMessage.Conversation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.Conversation buildPartial() {
        cn.wildfirechat.proto.WFCMessage.Conversation result = new cn.wildfirechat.proto.WFCMessage.Conversation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.target_ = target_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.line_ = line_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.Conversation) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.Conversation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.Conversation other) {
        if (other == cn.wildfirechat.proto.WFCMessage.Conversation.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasTarget()) {
          bitField0_ |= 0x00000002;
          target_ = other.target_;
          onChanged();
        }
        if (other.hasLine()) {
          setLine(other.getLine());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasType()) {
          
          return false;
        }
        if (!hasTarget()) {
          
          return false;
        }
        if (!hasLine()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.Conversation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.Conversation) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 type = 1;
      private int type_ ;
      /**
       * <code>required int32 type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000001;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        onChanged();
        return this;
      }

      // required string target = 2;
      private java.lang.Object target_ = "";
      /**
       * <code>required string target = 2;</code>
       */
      public boolean hasTarget() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string target = 2;</code>
       */
      public java.lang.String getTarget() {
        java.lang.Object ref = target_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          target_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string target = 2;</code>
       */
      public com.google.protobuf.ByteString
          getTargetBytes() {
        java.lang.Object ref = target_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          target_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string target = 2;</code>
       */
      public Builder setTarget(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        target_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string target = 2;</code>
       */
      public Builder clearTarget() {
        bitField0_ = (bitField0_ & ~0x00000002);
        target_ = getDefaultInstance().getTarget();
        onChanged();
        return this;
      }
      /**
       * <code>required string target = 2;</code>
       */
      public Builder setTargetBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        target_ = value;
        onChanged();
        return this;
      }

      // required int32 line = 3;
      private int line_ ;
      /**
       * <code>required int32 line = 3;</code>
       */
      public boolean hasLine() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 line = 3;</code>
       */
      public int getLine() {
        return line_;
      }
      /**
       * <code>required int32 line = 3;</code>
       */
      public Builder setLine(int value) {
        bitField0_ |= 0x00000004;
        line_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 line = 3;</code>
       */
      public Builder clearLine() {
        bitField0_ = (bitField0_ & ~0x00000004);
        line_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Conversation)
    }

    static {
      defaultInstance = new Conversation(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Conversation)
  }

  public interface GroupInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string target_id = 1;
    /**
     * <code>optional string target_id = 1;</code>
     */
    boolean hasTargetId();
    /**
     * <code>optional string target_id = 1;</code>
     */
    java.lang.String getTargetId();
    /**
     * <code>optional string target_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getTargetIdBytes();

    // required string name = 2;
    /**
     * <code>required string name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required string name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <code>required string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    // optional string portrait = 3;
    /**
     * <code>optional string portrait = 3;</code>
     */
    boolean hasPortrait();
    /**
     * <code>optional string portrait = 3;</code>
     */
    java.lang.String getPortrait();
    /**
     * <code>optional string portrait = 3;</code>
     */
    com.google.protobuf.ByteString
        getPortraitBytes();

    // optional string owner = 4;
    /**
     * <code>optional string owner = 4;</code>
     */
    boolean hasOwner();
    /**
     * <code>optional string owner = 4;</code>
     */
    java.lang.String getOwner();
    /**
     * <code>optional string owner = 4;</code>
     */
    com.google.protobuf.ByteString
        getOwnerBytes();

    // required int32 type = 5;
    /**
     * <code>required int32 type = 5;</code>
     */
    boolean hasType();
    /**
     * <code>required int32 type = 5;</code>
     */
    int getType();

    // optional int32 member_count = 6;
    /**
     * <code>optional int32 member_count = 6;</code>
     */
    boolean hasMemberCount();
    /**
     * <code>optional int32 member_count = 6;</code>
     */
    int getMemberCount();

    // optional string extra = 7;
    /**
     * <code>optional string extra = 7;</code>
     */
    boolean hasExtra();
    /**
     * <code>optional string extra = 7;</code>
     */
    java.lang.String getExtra();
    /**
     * <code>optional string extra = 7;</code>
     */
    com.google.protobuf.ByteString
        getExtraBytes();

    // optional int64 update_dt = 8;
    /**
     * <code>optional int64 update_dt = 8;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>optional int64 update_dt = 8;</code>
     */
    long getUpdateDt();

    // optional int64 member_update_dt = 9;
    /**
     * <code>optional int64 member_update_dt = 9;</code>
     */
    boolean hasMemberUpdateDt();
    /**
     * <code>optional int64 member_update_dt = 9;</code>
     */
    long getMemberUpdateDt();
  }
  /**
   * Protobuf type {@code GroupInfo}
   */
  public static final class GroupInfo extends
      com.google.protobuf.GeneratedMessage
      implements GroupInfoOrBuilder {
    // Use GroupInfo.newBuilder() to construct.
    private GroupInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GroupInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GroupInfo defaultInstance;
    public static GroupInfo getDefaultInstance() {
      return defaultInstance;
    }

    public GroupInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GroupInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              targetId_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              name_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              portrait_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              owner_ = input.readBytes();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              type_ = input.readInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              memberCount_ = input.readInt32();
              break;
            }
            case 58: {
              bitField0_ |= 0x00000040;
              extra_ = input.readBytes();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              updateDt_ = input.readInt64();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000100;
              memberUpdateDt_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GroupInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GroupInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GroupInfo.class, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<GroupInfo> PARSER =
        new com.google.protobuf.AbstractParser<GroupInfo>() {
      public GroupInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GroupInfo(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // optional string target_id = 1;
    public static final int TARGET_ID_FIELD_NUMBER = 1;
    private java.lang.Object targetId_;
    /**
     * <code>optional string target_id = 1;</code>
     */
    public boolean hasTargetId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string target_id = 1;</code>
     */
    public java.lang.String getTargetId() {
      java.lang.Object ref = targetId_;
      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();
        if (bs.isValidUtf8()) {
          targetId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string target_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTargetIdBytes() {
      java.lang.Object ref = targetId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string name = 2;
    public static final int NAME_FIELD_NUMBER = 2;
    private java.lang.Object name_;
    /**
     * <code>required string name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string portrait = 3;
    public static final int PORTRAIT_FIELD_NUMBER = 3;
    private java.lang.Object portrait_;
    /**
     * <code>optional string portrait = 3;</code>
     */
    public boolean hasPortrait() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string portrait = 3;</code>
     */
    public java.lang.String getPortrait() {
      java.lang.Object ref = portrait_;
      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();
        if (bs.isValidUtf8()) {
          portrait_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string portrait = 3;</code>
     */
    public com.google.protobuf.ByteString
        getPortraitBytes() {
      java.lang.Object ref = portrait_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        portrait_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string owner = 4;
    public static final int OWNER_FIELD_NUMBER = 4;
    private java.lang.Object owner_;
    /**
     * <code>optional string owner = 4;</code>
     */
    public boolean hasOwner() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string owner = 4;</code>
     */
    public java.lang.String getOwner() {
      java.lang.Object ref = owner_;
      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();
        if (bs.isValidUtf8()) {
          owner_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string owner = 4;</code>
     */
    public com.google.protobuf.ByteString
        getOwnerBytes() {
      java.lang.Object ref = owner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        owner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 type = 5;
    public static final int TYPE_FIELD_NUMBER = 5;
    private int type_;
    /**
     * <code>required int32 type = 5;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required int32 type = 5;</code>
     */
    public int getType() {
      return type_;
    }

    // optional int32 member_count = 6;
    public static final int MEMBER_COUNT_FIELD_NUMBER = 6;
    private int memberCount_;
    /**
     * <code>optional int32 member_count = 6;</code>
     */
    public boolean hasMemberCount() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int32 member_count = 6;</code>
     */
    public int getMemberCount() {
      return memberCount_;
    }

    // optional string extra = 7;
    public static final int EXTRA_FIELD_NUMBER = 7;
    private java.lang.Object extra_;
    /**
     * <code>optional string extra = 7;</code>
     */
    public boolean hasExtra() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional string extra = 7;</code>
     */
    public java.lang.String getExtra() {
      java.lang.Object ref = extra_;
      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();
        if (bs.isValidUtf8()) {
          extra_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string extra = 7;</code>
     */
    public com.google.protobuf.ByteString
        getExtraBytes() {
      java.lang.Object ref = extra_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        extra_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 update_dt = 8;
    public static final int UPDATE_DT_FIELD_NUMBER = 8;
    private long updateDt_;
    /**
     * <code>optional int64 update_dt = 8;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional int64 update_dt = 8;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    // optional int64 member_update_dt = 9;
    public static final int MEMBER_UPDATE_DT_FIELD_NUMBER = 9;
    private long memberUpdateDt_;
    /**
     * <code>optional int64 member_update_dt = 9;</code>
     */
    public boolean hasMemberUpdateDt() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional int64 member_update_dt = 9;</code>
     */
    public long getMemberUpdateDt() {
      return memberUpdateDt_;
    }

    private void initFields() {
      targetId_ = "";
      name_ = "";
      portrait_ = "";
      owner_ = "";
      type_ = 0;
      memberCount_ = 0;
      extra_ = "";
      updateDt_ = 0L;
      memberUpdateDt_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getTargetIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getPortraitBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getOwnerBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(5, type_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(6, memberCount_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(7, getExtraBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeInt64(8, updateDt_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeInt64(9, memberUpdateDt_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getTargetIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getPortraitBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getOwnerBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, type_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, memberCount_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getExtraBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, updateDt_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(9, memberUpdateDt_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GroupInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GroupInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GroupInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GroupInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GroupInfo.class, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GroupInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        targetId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        portrait_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        owner_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        memberCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        extra_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000080);
        memberUpdateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GroupInfo_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GroupInfo getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GroupInfo.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GroupInfo build() {
        cn.wildfirechat.proto.WFCMessage.GroupInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GroupInfo buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GroupInfo result = new cn.wildfirechat.proto.WFCMessage.GroupInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.targetId_ = targetId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.portrait_ = portrait_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.owner_ = owner_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.memberCount_ = memberCount_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.extra_ = extra_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.updateDt_ = updateDt_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.memberUpdateDt_ = memberUpdateDt_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GroupInfo) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GroupInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GroupInfo other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GroupInfo.getDefaultInstance()) return this;
        if (other.hasTargetId()) {
          bitField0_ |= 0x00000001;
          targetId_ = other.targetId_;
          onChanged();
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000002;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasPortrait()) {
          bitField0_ |= 0x00000004;
          portrait_ = other.portrait_;
          onChanged();
        }
        if (other.hasOwner()) {
          bitField0_ |= 0x00000008;
          owner_ = other.owner_;
          onChanged();
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasMemberCount()) {
          setMemberCount(other.getMemberCount());
        }
        if (other.hasExtra()) {
          bitField0_ |= 0x00000040;
          extra_ = other.extra_;
          onChanged();
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        if (other.hasMemberUpdateDt()) {
          setMemberUpdateDt(other.getMemberUpdateDt());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GroupInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GroupInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string target_id = 1;
      private java.lang.Object targetId_ = "";
      /**
       * <code>optional string target_id = 1;</code>
       */
      public boolean hasTargetId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public java.lang.String getTargetId() {
        java.lang.Object ref = targetId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          targetId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTargetIdBytes() {
        java.lang.Object ref = targetId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public Builder setTargetId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        targetId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public Builder clearTargetId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetId_ = getDefaultInstance().getTargetId();
        onChanged();
        return this;
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public Builder setTargetIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        targetId_ = value;
        onChanged();
        return this;
      }

      // required string name = 2;
      private java.lang.Object name_ = "";
      /**
       * <code>required string name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 2;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
        return this;
      }

      // optional string portrait = 3;
      private java.lang.Object portrait_ = "";
      /**
       * <code>optional string portrait = 3;</code>
       */
      public boolean hasPortrait() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public java.lang.String getPortrait() {
        java.lang.Object ref = portrait_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          portrait_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public com.google.protobuf.ByteString
          getPortraitBytes() {
        java.lang.Object ref = portrait_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          portrait_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public Builder setPortrait(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        portrait_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public Builder clearPortrait() {
        bitField0_ = (bitField0_ & ~0x00000004);
        portrait_ = getDefaultInstance().getPortrait();
        onChanged();
        return this;
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public Builder setPortraitBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        portrait_ = value;
        onChanged();
        return this;
      }

      // optional string owner = 4;
      private java.lang.Object owner_ = "";
      /**
       * <code>optional string owner = 4;</code>
       */
      public boolean hasOwner() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public java.lang.String getOwner() {
        java.lang.Object ref = owner_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          owner_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public com.google.protobuf.ByteString
          getOwnerBytes() {
        java.lang.Object ref = owner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          owner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public Builder setOwner(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        owner_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public Builder clearOwner() {
        bitField0_ = (bitField0_ & ~0x00000008);
        owner_ = getDefaultInstance().getOwner();
        onChanged();
        return this;
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public Builder setOwnerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        owner_ = value;
        onChanged();
        return this;
      }

      // required int32 type = 5;
      private int type_ ;
      /**
       * <code>required int32 type = 5;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required int32 type = 5;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>required int32 type = 5;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000010;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 type = 5;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000010);
        type_ = 0;
        onChanged();
        return this;
      }

      // optional int32 member_count = 6;
      private int memberCount_ ;
      /**
       * <code>optional int32 member_count = 6;</code>
       */
      public boolean hasMemberCount() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int32 member_count = 6;</code>
       */
      public int getMemberCount() {
        return memberCount_;
      }
      /**
       * <code>optional int32 member_count = 6;</code>
       */
      public Builder setMemberCount(int value) {
        bitField0_ |= 0x00000020;
        memberCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 member_count = 6;</code>
       */
      public Builder clearMemberCount() {
        bitField0_ = (bitField0_ & ~0x00000020);
        memberCount_ = 0;
        onChanged();
        return this;
      }

      // optional string extra = 7;
      private java.lang.Object extra_ = "";
      /**
       * <code>optional string extra = 7;</code>
       */
      public boolean hasExtra() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public java.lang.String getExtra() {
        java.lang.Object ref = extra_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          extra_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public com.google.protobuf.ByteString
          getExtraBytes() {
        java.lang.Object ref = extra_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          extra_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public Builder setExtra(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        extra_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public Builder clearExtra() {
        bitField0_ = (bitField0_ & ~0x00000040);
        extra_ = getDefaultInstance().getExtra();
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public Builder setExtraBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        extra_ = value;
        onChanged();
        return this;
      }

      // optional int64 update_dt = 8;
      private long updateDt_ ;
      /**
       * <code>optional int64 update_dt = 8;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int64 update_dt = 8;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>optional int64 update_dt = 8;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000080;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 update_dt = 8;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000080);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 member_update_dt = 9;
      private long memberUpdateDt_ ;
      /**
       * <code>optional int64 member_update_dt = 9;</code>
       */
      public boolean hasMemberUpdateDt() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional int64 member_update_dt = 9;</code>
       */
      public long getMemberUpdateDt() {
        return memberUpdateDt_;
      }
      /**
       * <code>optional int64 member_update_dt = 9;</code>
       */
      public Builder setMemberUpdateDt(long value) {
        bitField0_ |= 0x00000100;
        memberUpdateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 member_update_dt = 9;</code>
       */
      public Builder clearMemberUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000100);
        memberUpdateDt_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GroupInfo)
    }

    static {
      defaultInstance = new GroupInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GroupInfo)
  }

  public interface GroupMemberOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string member_id = 1;
    /**
     * <code>required string member_id = 1;</code>
     */
    boolean hasMemberId();
    /**
     * <code>required string member_id = 1;</code>
     */
    java.lang.String getMemberId();
    /**
     * <code>required string member_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMemberIdBytes();

    // optional string alias = 2;
    /**
     * <code>optional string alias = 2;</code>
     */
    boolean hasAlias();
    /**
     * <code>optional string alias = 2;</code>
     */
    java.lang.String getAlias();
    /**
     * <code>optional string alias = 2;</code>
     */
    com.google.protobuf.ByteString
        getAliasBytes();

    // required int32 type = 3;
    /**
     * <code>required int32 type = 3;</code>
     */
    boolean hasType();
    /**
     * <code>required int32 type = 3;</code>
     */
    int getType();

    // optional int64 update_dt = 4;
    /**
     * <code>optional int64 update_dt = 4;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>optional int64 update_dt = 4;</code>
     */
    long getUpdateDt();
  }
  /**
   * Protobuf type {@code GroupMember}
   */
  public static final class GroupMember extends
      com.google.protobuf.GeneratedMessage
      implements GroupMemberOrBuilder {
    // Use GroupMember.newBuilder() to construct.
    private GroupMember(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GroupMember(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GroupMember defaultInstance;
    public static GroupMember getDefaultInstance() {
      return defaultInstance;
    }

    public GroupMember getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GroupMember(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              memberId_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              alias_ = input.readBytes();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              type_ = input.readInt32();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              updateDt_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GroupMember_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GroupMember_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GroupMember.class, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder.class);
    }

    public static com.google.protobuf.Parser<GroupMember> PARSER =
        new com.google.protobuf.AbstractParser<GroupMember>() {
      public GroupMember parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GroupMember(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string member_id = 1;
    public static final int MEMBER_ID_FIELD_NUMBER = 1;
    private java.lang.Object memberId_;
    /**
     * <code>required string member_id = 1;</code>
     */
    public boolean hasMemberId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string member_id = 1;</code>
     */
    public java.lang.String getMemberId() {
      java.lang.Object ref = memberId_;
      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();
        if (bs.isValidUtf8()) {
          memberId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string member_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMemberIdBytes() {
      java.lang.Object ref = memberId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        memberId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string alias = 2;
    public static final int ALIAS_FIELD_NUMBER = 2;
    private java.lang.Object alias_;
    /**
     * <code>optional string alias = 2;</code>
     */
    public boolean hasAlias() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string alias = 2;</code>
     */
    public java.lang.String getAlias() {
      java.lang.Object ref = alias_;
      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();
        if (bs.isValidUtf8()) {
          alias_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string alias = 2;</code>
     */
    public com.google.protobuf.ByteString
        getAliasBytes() {
      java.lang.Object ref = alias_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        alias_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 type = 3;
    public static final int TYPE_FIELD_NUMBER = 3;
    private int type_;
    /**
     * <code>required int32 type = 3;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int32 type = 3;</code>
     */
    public int getType() {
      return type_;
    }

    // optional int64 update_dt = 4;
    public static final int UPDATE_DT_FIELD_NUMBER = 4;
    private long updateDt_;
    /**
     * <code>optional int64 update_dt = 4;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int64 update_dt = 4;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    private void initFields() {
      memberId_ = "";
      alias_ = "";
      type_ = 0;
      updateDt_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasMemberId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getMemberIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getAliasBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, type_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt64(4, updateDt_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getMemberIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getAliasBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, type_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, updateDt_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GroupMember parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GroupMember prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GroupMember}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GroupMember_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GroupMember_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GroupMember.class, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GroupMember.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        memberId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        alias_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GroupMember_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GroupMember getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GroupMember.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GroupMember build() {
        cn.wildfirechat.proto.WFCMessage.GroupMember result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GroupMember buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GroupMember result = new cn.wildfirechat.proto.WFCMessage.GroupMember(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.memberId_ = memberId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.alias_ = alias_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.updateDt_ = updateDt_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GroupMember) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GroupMember)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GroupMember other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GroupMember.getDefaultInstance()) return this;
        if (other.hasMemberId()) {
          bitField0_ |= 0x00000001;
          memberId_ = other.memberId_;
          onChanged();
        }
        if (other.hasAlias()) {
          bitField0_ |= 0x00000002;
          alias_ = other.alias_;
          onChanged();
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasMemberId()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GroupMember parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GroupMember) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string member_id = 1;
      private java.lang.Object memberId_ = "";
      /**
       * <code>required string member_id = 1;</code>
       */
      public boolean hasMemberId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string member_id = 1;</code>
       */
      public java.lang.String getMemberId() {
        java.lang.Object ref = memberId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          memberId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string member_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMemberIdBytes() {
        java.lang.Object ref = memberId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          memberId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string member_id = 1;</code>
       */
      public Builder setMemberId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        memberId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string member_id = 1;</code>
       */
      public Builder clearMemberId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        memberId_ = getDefaultInstance().getMemberId();
        onChanged();
        return this;
      }
      /**
       * <code>required string member_id = 1;</code>
       */
      public Builder setMemberIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        memberId_ = value;
        onChanged();
        return this;
      }

      // optional string alias = 2;
      private java.lang.Object alias_ = "";
      /**
       * <code>optional string alias = 2;</code>
       */
      public boolean hasAlias() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string alias = 2;</code>
       */
      public java.lang.String getAlias() {
        java.lang.Object ref = alias_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          alias_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string alias = 2;</code>
       */
      public com.google.protobuf.ByteString
          getAliasBytes() {
        java.lang.Object ref = alias_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          alias_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string alias = 2;</code>
       */
      public Builder setAlias(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        alias_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string alias = 2;</code>
       */
      public Builder clearAlias() {
        bitField0_ = (bitField0_ & ~0x00000002);
        alias_ = getDefaultInstance().getAlias();
        onChanged();
        return this;
      }
      /**
       * <code>optional string alias = 2;</code>
       */
      public Builder setAliasBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        alias_ = value;
        onChanged();
        return this;
      }

      // required int32 type = 3;
      private int type_ ;
      /**
       * <code>required int32 type = 3;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 type = 3;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>required int32 type = 3;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000004;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 type = 3;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000004);
        type_ = 0;
        onChanged();
        return this;
      }

      // optional int64 update_dt = 4;
      private long updateDt_ ;
      /**
       * <code>optional int64 update_dt = 4;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int64 update_dt = 4;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>optional int64 update_dt = 4;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000008;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 update_dt = 4;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000008);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GroupMember)
    }

    static {
      defaultInstance = new GroupMember(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GroupMember)
  }

  public interface GroupOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .GroupInfo group_info = 1;
    /**
     * <code>required .GroupInfo group_info = 1;</code>
     */
    boolean hasGroupInfo();
    /**
     * <code>required .GroupInfo group_info = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupInfo getGroupInfo();
    /**
     * <code>required .GroupInfo group_info = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder getGroupInfoOrBuilder();

    // repeated .GroupMember members = 2;
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> 
        getMembersList();
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupMember getMembers(int index);
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    int getMembersCount();
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
        getMembersOrBuilderList();
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder getMembersOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Group}
   */
  public static final class Group extends
      com.google.protobuf.GeneratedMessage
      implements GroupOrBuilder {
    // Use Group.newBuilder() to construct.
    private Group(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Group(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Group defaultInstance;
    public static Group getDefaultInstance() {
      return defaultInstance;
    }

    public Group getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Group(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = groupInfo_.toBuilder();
              }
              groupInfo_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.GroupInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(groupInfo_);
                groupInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                members_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.GroupMember>();
                mutable_bitField0_ |= 0x00000002;
              }
              members_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.GroupMember.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          members_ = java.util.Collections.unmodifiableList(members_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Group_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Group_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.Group.class, cn.wildfirechat.proto.WFCMessage.Group.Builder.class);
    }

    public static com.google.protobuf.Parser<Group> PARSER =
        new com.google.protobuf.AbstractParser<Group>() {
      public Group parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Group(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required .GroupInfo group_info = 1;
    public static final int GROUP_INFO_FIELD_NUMBER = 1;
    private cn.wildfirechat.proto.WFCMessage.GroupInfo groupInfo_;
    /**
     * <code>required .GroupInfo group_info = 1;</code>
     */
    public boolean hasGroupInfo() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .GroupInfo group_info = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupInfo getGroupInfo() {
      return groupInfo_;
    }
    /**
     * <code>required .GroupInfo group_info = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder getGroupInfoOrBuilder() {
      return groupInfo_;
    }

    // repeated .GroupMember members = 2;
    public static final int MEMBERS_FIELD_NUMBER = 2;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> members_;
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> getMembersList() {
      return members_;
    }
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
        getMembersOrBuilderList() {
      return members_;
    }
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    public int getMembersCount() {
      return members_.size();
    }
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupMember getMembers(int index) {
      return members_.get(index);
    }
    /**
     * <code>repeated .GroupMember members = 2;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder getMembersOrBuilder(
        int index) {
      return members_.get(index);
    }

    private void initFields() {
      groupInfo_ = cn.wildfirechat.proto.WFCMessage.GroupInfo.getDefaultInstance();
      members_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasGroupInfo()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getGroupInfo().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getMembersCount(); i++) {
        if (!getMembers(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, groupInfo_);
      }
      for (int i = 0; i < members_.size(); i++) {
        output.writeMessage(2, members_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, groupInfo_);
      }
      for (int i = 0; i < members_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, members_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.Group parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Group parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Group parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Group parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Group parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Group parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Group parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Group parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Group parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Group parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.Group prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Group}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Group_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Group_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.Group.class, cn.wildfirechat.proto.WFCMessage.Group.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.Group.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getGroupInfoFieldBuilder();
          getMembersFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (groupInfoBuilder_ == null) {
          groupInfo_ = cn.wildfirechat.proto.WFCMessage.GroupInfo.getDefaultInstance();
        } else {
          groupInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (membersBuilder_ == null) {
          members_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          membersBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Group_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.Group getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.Group.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.Group build() {
        cn.wildfirechat.proto.WFCMessage.Group result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.Group buildPartial() {
        cn.wildfirechat.proto.WFCMessage.Group result = new cn.wildfirechat.proto.WFCMessage.Group(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (groupInfoBuilder_ == null) {
          result.groupInfo_ = groupInfo_;
        } else {
          result.groupInfo_ = groupInfoBuilder_.build();
        }
        if (membersBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            members_ = java.util.Collections.unmodifiableList(members_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.members_ = members_;
        } else {
          result.members_ = membersBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.Group) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.Group)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.Group other) {
        if (other == cn.wildfirechat.proto.WFCMessage.Group.getDefaultInstance()) return this;
        if (other.hasGroupInfo()) {
          mergeGroupInfo(other.getGroupInfo());
        }
        if (membersBuilder_ == null) {
          if (!other.members_.isEmpty()) {
            if (members_.isEmpty()) {
              members_ = other.members_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureMembersIsMutable();
              members_.addAll(other.members_);
            }
            onChanged();
          }
        } else {
          if (!other.members_.isEmpty()) {
            if (membersBuilder_.isEmpty()) {
              membersBuilder_.dispose();
              membersBuilder_ = null;
              members_ = other.members_;
              bitField0_ = (bitField0_ & ~0x00000002);
              membersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMembersFieldBuilder() : null;
            } else {
              membersBuilder_.addAllMessages(other.members_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasGroupInfo()) {
          
          return false;
        }
        if (!getGroupInfo().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getMembersCount(); i++) {
          if (!getMembers(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.Group parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.Group) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .GroupInfo group_info = 1;
      private cn.wildfirechat.proto.WFCMessage.GroupInfo groupInfo_ = cn.wildfirechat.proto.WFCMessage.GroupInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupInfo, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder, cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder> groupInfoBuilder_;
      /**
       * <code>required .GroupInfo group_info = 1;</code>
       */
      public boolean hasGroupInfo() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .GroupInfo group_info = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupInfo getGroupInfo() {
        if (groupInfoBuilder_ == null) {
          return groupInfo_;
        } else {
          return groupInfoBuilder_.getMessage();
        }
      }
      /**
       * <code>required .GroupInfo group_info = 1;</code>
       */
      public Builder setGroupInfo(cn.wildfirechat.proto.WFCMessage.GroupInfo value) {
        if (groupInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          groupInfo_ = value;
          onChanged();
        } else {
          groupInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .GroupInfo group_info = 1;</code>
       */
      public Builder setGroupInfo(
          cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder builderForValue) {
        if (groupInfoBuilder_ == null) {
          groupInfo_ = builderForValue.build();
          onChanged();
        } else {
          groupInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .GroupInfo group_info = 1;</code>
       */
      public Builder mergeGroupInfo(cn.wildfirechat.proto.WFCMessage.GroupInfo value) {
        if (groupInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              groupInfo_ != cn.wildfirechat.proto.WFCMessage.GroupInfo.getDefaultInstance()) {
            groupInfo_ =
              cn.wildfirechat.proto.WFCMessage.GroupInfo.newBuilder(groupInfo_).mergeFrom(value).buildPartial();
          } else {
            groupInfo_ = value;
          }
          onChanged();
        } else {
          groupInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .GroupInfo group_info = 1;</code>
       */
      public Builder clearGroupInfo() {
        if (groupInfoBuilder_ == null) {
          groupInfo_ = cn.wildfirechat.proto.WFCMessage.GroupInfo.getDefaultInstance();
          onChanged();
        } else {
          groupInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .GroupInfo group_info = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder getGroupInfoBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getGroupInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>required .GroupInfo group_info = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder getGroupInfoOrBuilder() {
        if (groupInfoBuilder_ != null) {
          return groupInfoBuilder_.getMessageOrBuilder();
        } else {
          return groupInfo_;
        }
      }
      /**
       * <code>required .GroupInfo group_info = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupInfo, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder, cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder> 
          getGroupInfoFieldBuilder() {
        if (groupInfoBuilder_ == null) {
          groupInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.GroupInfo, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder, cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder>(
                  groupInfo_,
                  getParentForChildren(),
                  isClean());
          groupInfo_ = null;
        }
        return groupInfoBuilder_;
      }

      // repeated .GroupMember members = 2;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> members_ =
        java.util.Collections.emptyList();
      private void ensureMembersIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          members_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.GroupMember>(members_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupMember, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder, cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> membersBuilder_;

      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> getMembersList() {
        if (membersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(members_);
        } else {
          return membersBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public int getMembersCount() {
        if (membersBuilder_ == null) {
          return members_.size();
        } else {
          return membersBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember getMembers(int index) {
        if (membersBuilder_ == null) {
          return members_.get(index);
        } else {
          return membersBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public Builder setMembers(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember value) {
        if (membersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMembersIsMutable();
          members_.set(index, value);
          onChanged();
        } else {
          membersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public Builder setMembers(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder builderForValue) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          members_.set(index, builderForValue.build());
          onChanged();
        } else {
          membersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public Builder addMembers(cn.wildfirechat.proto.WFCMessage.GroupMember value) {
        if (membersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMembersIsMutable();
          members_.add(value);
          onChanged();
        } else {
          membersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public Builder addMembers(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember value) {
        if (membersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMembersIsMutable();
          members_.add(index, value);
          onChanged();
        } else {
          membersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public Builder addMembers(
          cn.wildfirechat.proto.WFCMessage.GroupMember.Builder builderForValue) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          members_.add(builderForValue.build());
          onChanged();
        } else {
          membersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public Builder addMembers(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder builderForValue) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          members_.add(index, builderForValue.build());
          onChanged();
        } else {
          membersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public Builder addAllMembers(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.GroupMember> values) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          super.addAll(values, members_);
          onChanged();
        } else {
          membersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public Builder clearMembers() {
        if (membersBuilder_ == null) {
          members_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          membersBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public Builder removeMembers(int index) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          members_.remove(index);
          onChanged();
        } else {
          membersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember.Builder getMembersBuilder(
          int index) {
        return getMembersFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder getMembersOrBuilder(
          int index) {
        if (membersBuilder_ == null) {
          return members_.get(index);  } else {
          return membersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
           getMembersOrBuilderList() {
        if (membersBuilder_ != null) {
          return membersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(members_);
        }
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember.Builder addMembersBuilder() {
        return getMembersFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.GroupMember.getDefaultInstance());
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember.Builder addMembersBuilder(
          int index) {
        return getMembersFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.GroupMember.getDefaultInstance());
      }
      /**
       * <code>repeated .GroupMember members = 2;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember.Builder> 
           getMembersBuilderList() {
        return getMembersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupMember, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder, cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
          getMembersFieldBuilder() {
        if (membersBuilder_ == null) {
          membersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.GroupMember, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder, cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder>(
                  members_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          members_ = null;
        }
        return membersBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:Group)
    }

    static {
      defaultInstance = new Group(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Group)
  }

  public interface ChannelInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string target_id = 1;
    /**
     * <code>optional string target_id = 1;</code>
     */
    boolean hasTargetId();
    /**
     * <code>optional string target_id = 1;</code>
     */
    java.lang.String getTargetId();
    /**
     * <code>optional string target_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getTargetIdBytes();

    // required string name = 2;
    /**
     * <code>required string name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required string name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <code>required string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    // optional string portrait = 3;
    /**
     * <code>optional string portrait = 3;</code>
     */
    boolean hasPortrait();
    /**
     * <code>optional string portrait = 3;</code>
     */
    java.lang.String getPortrait();
    /**
     * <code>optional string portrait = 3;</code>
     */
    com.google.protobuf.ByteString
        getPortraitBytes();

    // optional string owner = 4;
    /**
     * <code>optional string owner = 4;</code>
     */
    boolean hasOwner();
    /**
     * <code>optional string owner = 4;</code>
     */
    java.lang.String getOwner();
    /**
     * <code>optional string owner = 4;</code>
     */
    com.google.protobuf.ByteString
        getOwnerBytes();

    // optional int32 status = 5;
    /**
     * <code>optional int32 status = 5;</code>
     *
     * <pre>
     *0, public; 1, private; 2 closed;
     * </pre>
     */
    boolean hasStatus();
    /**
     * <code>optional int32 status = 5;</code>
     *
     * <pre>
     *0, public; 1, private; 2 closed;
     * </pre>
     */
    int getStatus();

    // optional string desc = 6;
    /**
     * <code>optional string desc = 6;</code>
     */
    boolean hasDesc();
    /**
     * <code>optional string desc = 6;</code>
     */
    java.lang.String getDesc();
    /**
     * <code>optional string desc = 6;</code>
     */
    com.google.protobuf.ByteString
        getDescBytes();

    // optional string extra = 7;
    /**
     * <code>optional string extra = 7;</code>
     */
    boolean hasExtra();
    /**
     * <code>optional string extra = 7;</code>
     */
    java.lang.String getExtra();
    /**
     * <code>optional string extra = 7;</code>
     */
    com.google.protobuf.ByteString
        getExtraBytes();

    // optional int64 update_dt = 8;
    /**
     * <code>optional int64 update_dt = 8;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>optional int64 update_dt = 8;</code>
     */
    long getUpdateDt();

    // optional string secret = 9;
    /**
     * <code>optional string secret = 9;</code>
     */
    boolean hasSecret();
    /**
     * <code>optional string secret = 9;</code>
     */
    java.lang.String getSecret();
    /**
     * <code>optional string secret = 9;</code>
     */
    com.google.protobuf.ByteString
        getSecretBytes();

    // optional string callback = 10;
    /**
     * <code>optional string callback = 10;</code>
     */
    boolean hasCallback();
    /**
     * <code>optional string callback = 10;</code>
     */
    java.lang.String getCallback();
    /**
     * <code>optional string callback = 10;</code>
     */
    com.google.protobuf.ByteString
        getCallbackBytes();

    // optional int32 automatic = 11;
    /**
     * <code>optional int32 automatic = 11;</code>
     */
    boolean hasAutomatic();
    /**
     * <code>optional int32 automatic = 11;</code>
     */
    int getAutomatic();
  }
  /**
   * Protobuf type {@code ChannelInfo}
   */
  public static final class ChannelInfo extends
      com.google.protobuf.GeneratedMessage
      implements ChannelInfoOrBuilder {
    // Use ChannelInfo.newBuilder() to construct.
    private ChannelInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ChannelInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ChannelInfo defaultInstance;
    public static ChannelInfo getDefaultInstance() {
      return defaultInstance;
    }

    public ChannelInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ChannelInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              targetId_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              name_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              portrait_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              owner_ = input.readBytes();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              status_ = input.readInt32();
              break;
            }
            case 50: {
              bitField0_ |= 0x00000020;
              desc_ = input.readBytes();
              break;
            }
            case 58: {
              bitField0_ |= 0x00000040;
              extra_ = input.readBytes();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              updateDt_ = input.readInt64();
              break;
            }
            case 74: {
              bitField0_ |= 0x00000100;
              secret_ = input.readBytes();
              break;
            }
            case 82: {
              bitField0_ |= 0x00000200;
              callback_ = input.readBytes();
              break;
            }
            case 88: {
              bitField0_ |= 0x00000400;
              automatic_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ChannelInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ChannelInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ChannelInfo.class, cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<ChannelInfo> PARSER =
        new com.google.protobuf.AbstractParser<ChannelInfo>() {
      public ChannelInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ChannelInfo(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // optional string target_id = 1;
    public static final int TARGET_ID_FIELD_NUMBER = 1;
    private java.lang.Object targetId_;
    /**
     * <code>optional string target_id = 1;</code>
     */
    public boolean hasTargetId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string target_id = 1;</code>
     */
    public java.lang.String getTargetId() {
      java.lang.Object ref = targetId_;
      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();
        if (bs.isValidUtf8()) {
          targetId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string target_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTargetIdBytes() {
      java.lang.Object ref = targetId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string name = 2;
    public static final int NAME_FIELD_NUMBER = 2;
    private java.lang.Object name_;
    /**
     * <code>required string name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string portrait = 3;
    public static final int PORTRAIT_FIELD_NUMBER = 3;
    private java.lang.Object portrait_;
    /**
     * <code>optional string portrait = 3;</code>
     */
    public boolean hasPortrait() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string portrait = 3;</code>
     */
    public java.lang.String getPortrait() {
      java.lang.Object ref = portrait_;
      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();
        if (bs.isValidUtf8()) {
          portrait_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string portrait = 3;</code>
     */
    public com.google.protobuf.ByteString
        getPortraitBytes() {
      java.lang.Object ref = portrait_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        portrait_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string owner = 4;
    public static final int OWNER_FIELD_NUMBER = 4;
    private java.lang.Object owner_;
    /**
     * <code>optional string owner = 4;</code>
     */
    public boolean hasOwner() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string owner = 4;</code>
     */
    public java.lang.String getOwner() {
      java.lang.Object ref = owner_;
      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();
        if (bs.isValidUtf8()) {
          owner_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string owner = 4;</code>
     */
    public com.google.protobuf.ByteString
        getOwnerBytes() {
      java.lang.Object ref = owner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        owner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 status = 5;
    public static final int STATUS_FIELD_NUMBER = 5;
    private int status_;
    /**
     * <code>optional int32 status = 5;</code>
     *
     * <pre>
     *0, public; 1, private; 2 closed;
     * </pre>
     */
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int32 status = 5;</code>
     *
     * <pre>
     *0, public; 1, private; 2 closed;
     * </pre>
     */
    public int getStatus() {
      return status_;
    }

    // optional string desc = 6;
    public static final int DESC_FIELD_NUMBER = 6;
    private java.lang.Object desc_;
    /**
     * <code>optional string desc = 6;</code>
     */
    public boolean hasDesc() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional string desc = 6;</code>
     */
    public java.lang.String getDesc() {
      java.lang.Object ref = desc_;
      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();
        if (bs.isValidUtf8()) {
          desc_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string desc = 6;</code>
     */
    public com.google.protobuf.ByteString
        getDescBytes() {
      java.lang.Object ref = desc_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        desc_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string extra = 7;
    public static final int EXTRA_FIELD_NUMBER = 7;
    private java.lang.Object extra_;
    /**
     * <code>optional string extra = 7;</code>
     */
    public boolean hasExtra() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional string extra = 7;</code>
     */
    public java.lang.String getExtra() {
      java.lang.Object ref = extra_;
      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();
        if (bs.isValidUtf8()) {
          extra_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string extra = 7;</code>
     */
    public com.google.protobuf.ByteString
        getExtraBytes() {
      java.lang.Object ref = extra_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        extra_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 update_dt = 8;
    public static final int UPDATE_DT_FIELD_NUMBER = 8;
    private long updateDt_;
    /**
     * <code>optional int64 update_dt = 8;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional int64 update_dt = 8;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    // optional string secret = 9;
    public static final int SECRET_FIELD_NUMBER = 9;
    private java.lang.Object secret_;
    /**
     * <code>optional string secret = 9;</code>
     */
    public boolean hasSecret() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional string secret = 9;</code>
     */
    public java.lang.String getSecret() {
      java.lang.Object ref = secret_;
      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();
        if (bs.isValidUtf8()) {
          secret_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string secret = 9;</code>
     */
    public com.google.protobuf.ByteString
        getSecretBytes() {
      java.lang.Object ref = secret_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        secret_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string callback = 10;
    public static final int CALLBACK_FIELD_NUMBER = 10;
    private java.lang.Object callback_;
    /**
     * <code>optional string callback = 10;</code>
     */
    public boolean hasCallback() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional string callback = 10;</code>
     */
    public java.lang.String getCallback() {
      java.lang.Object ref = callback_;
      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();
        if (bs.isValidUtf8()) {
          callback_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string callback = 10;</code>
     */
    public com.google.protobuf.ByteString
        getCallbackBytes() {
      java.lang.Object ref = callback_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        callback_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 automatic = 11;
    public static final int AUTOMATIC_FIELD_NUMBER = 11;
    private int automatic_;
    /**
     * <code>optional int32 automatic = 11;</code>
     */
    public boolean hasAutomatic() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <code>optional int32 automatic = 11;</code>
     */
    public int getAutomatic() {
      return automatic_;
    }

    private void initFields() {
      targetId_ = "";
      name_ = "";
      portrait_ = "";
      owner_ = "";
      status_ = 0;
      desc_ = "";
      extra_ = "";
      updateDt_ = 0L;
      secret_ = "";
      callback_ = "";
      automatic_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getTargetIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getPortraitBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getOwnerBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(5, status_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBytes(6, getDescBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(7, getExtraBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeInt64(8, updateDt_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBytes(9, getSecretBytes());
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBytes(10, getCallbackBytes());
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeInt32(11, automatic_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getTargetIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getPortraitBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getOwnerBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, status_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, getDescBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getExtraBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, updateDt_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(9, getSecretBytes());
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(10, getCallbackBytes());
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(11, automatic_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChannelInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ChannelInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ChannelInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ChannelInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ChannelInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ChannelInfo.class, cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ChannelInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        targetId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        portrait_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        owner_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        status_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        desc_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        extra_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000080);
        secret_ = "";
        bitField0_ = (bitField0_ & ~0x00000100);
        callback_ = "";
        bitField0_ = (bitField0_ & ~0x00000200);
        automatic_ = 0;
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ChannelInfo_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ChannelInfo getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ChannelInfo.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ChannelInfo build() {
        cn.wildfirechat.proto.WFCMessage.ChannelInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ChannelInfo buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ChannelInfo result = new cn.wildfirechat.proto.WFCMessage.ChannelInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.targetId_ = targetId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.portrait_ = portrait_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.owner_ = owner_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.status_ = status_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.desc_ = desc_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.extra_ = extra_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.updateDt_ = updateDt_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.secret_ = secret_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.callback_ = callback_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        result.automatic_ = automatic_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ChannelInfo) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ChannelInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ChannelInfo other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ChannelInfo.getDefaultInstance()) return this;
        if (other.hasTargetId()) {
          bitField0_ |= 0x00000001;
          targetId_ = other.targetId_;
          onChanged();
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000002;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasPortrait()) {
          bitField0_ |= 0x00000004;
          portrait_ = other.portrait_;
          onChanged();
        }
        if (other.hasOwner()) {
          bitField0_ |= 0x00000008;
          owner_ = other.owner_;
          onChanged();
        }
        if (other.hasStatus()) {
          setStatus(other.getStatus());
        }
        if (other.hasDesc()) {
          bitField0_ |= 0x00000020;
          desc_ = other.desc_;
          onChanged();
        }
        if (other.hasExtra()) {
          bitField0_ |= 0x00000040;
          extra_ = other.extra_;
          onChanged();
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        if (other.hasSecret()) {
          bitField0_ |= 0x00000100;
          secret_ = other.secret_;
          onChanged();
        }
        if (other.hasCallback()) {
          bitField0_ |= 0x00000200;
          callback_ = other.callback_;
          onChanged();
        }
        if (other.hasAutomatic()) {
          setAutomatic(other.getAutomatic());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ChannelInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ChannelInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string target_id = 1;
      private java.lang.Object targetId_ = "";
      /**
       * <code>optional string target_id = 1;</code>
       */
      public boolean hasTargetId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public java.lang.String getTargetId() {
        java.lang.Object ref = targetId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          targetId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTargetIdBytes() {
        java.lang.Object ref = targetId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public Builder setTargetId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        targetId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public Builder clearTargetId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetId_ = getDefaultInstance().getTargetId();
        onChanged();
        return this;
      }
      /**
       * <code>optional string target_id = 1;</code>
       */
      public Builder setTargetIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        targetId_ = value;
        onChanged();
        return this;
      }

      // required string name = 2;
      private java.lang.Object name_ = "";
      /**
       * <code>required string name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 2;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
        return this;
      }

      // optional string portrait = 3;
      private java.lang.Object portrait_ = "";
      /**
       * <code>optional string portrait = 3;</code>
       */
      public boolean hasPortrait() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public java.lang.String getPortrait() {
        java.lang.Object ref = portrait_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          portrait_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public com.google.protobuf.ByteString
          getPortraitBytes() {
        java.lang.Object ref = portrait_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          portrait_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public Builder setPortrait(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        portrait_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public Builder clearPortrait() {
        bitField0_ = (bitField0_ & ~0x00000004);
        portrait_ = getDefaultInstance().getPortrait();
        onChanged();
        return this;
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public Builder setPortraitBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        portrait_ = value;
        onChanged();
        return this;
      }

      // optional string owner = 4;
      private java.lang.Object owner_ = "";
      /**
       * <code>optional string owner = 4;</code>
       */
      public boolean hasOwner() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public java.lang.String getOwner() {
        java.lang.Object ref = owner_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          owner_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public com.google.protobuf.ByteString
          getOwnerBytes() {
        java.lang.Object ref = owner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          owner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public Builder setOwner(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        owner_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public Builder clearOwner() {
        bitField0_ = (bitField0_ & ~0x00000008);
        owner_ = getDefaultInstance().getOwner();
        onChanged();
        return this;
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public Builder setOwnerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        owner_ = value;
        onChanged();
        return this;
      }

      // optional int32 status = 5;
      private int status_ ;
      /**
       * <code>optional int32 status = 5;</code>
       *
       * <pre>
       *0, public; 1, private; 2 closed;
       * </pre>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 status = 5;</code>
       *
       * <pre>
       *0, public; 1, private; 2 closed;
       * </pre>
       */
      public int getStatus() {
        return status_;
      }
      /**
       * <code>optional int32 status = 5;</code>
       *
       * <pre>
       *0, public; 1, private; 2 closed;
       * </pre>
       */
      public Builder setStatus(int value) {
        bitField0_ |= 0x00000010;
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 status = 5;</code>
       *
       * <pre>
       *0, public; 1, private; 2 closed;
       * </pre>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000010);
        status_ = 0;
        onChanged();
        return this;
      }

      // optional string desc = 6;
      private java.lang.Object desc_ = "";
      /**
       * <code>optional string desc = 6;</code>
       */
      public boolean hasDesc() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional string desc = 6;</code>
       */
      public java.lang.String getDesc() {
        java.lang.Object ref = desc_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          desc_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string desc = 6;</code>
       */
      public com.google.protobuf.ByteString
          getDescBytes() {
        java.lang.Object ref = desc_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          desc_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string desc = 6;</code>
       */
      public Builder setDesc(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        desc_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string desc = 6;</code>
       */
      public Builder clearDesc() {
        bitField0_ = (bitField0_ & ~0x00000020);
        desc_ = getDefaultInstance().getDesc();
        onChanged();
        return this;
      }
      /**
       * <code>optional string desc = 6;</code>
       */
      public Builder setDescBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        desc_ = value;
        onChanged();
        return this;
      }

      // optional string extra = 7;
      private java.lang.Object extra_ = "";
      /**
       * <code>optional string extra = 7;</code>
       */
      public boolean hasExtra() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public java.lang.String getExtra() {
        java.lang.Object ref = extra_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          extra_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public com.google.protobuf.ByteString
          getExtraBytes() {
        java.lang.Object ref = extra_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          extra_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public Builder setExtra(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        extra_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public Builder clearExtra() {
        bitField0_ = (bitField0_ & ~0x00000040);
        extra_ = getDefaultInstance().getExtra();
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public Builder setExtraBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        extra_ = value;
        onChanged();
        return this;
      }

      // optional int64 update_dt = 8;
      private long updateDt_ ;
      /**
       * <code>optional int64 update_dt = 8;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int64 update_dt = 8;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>optional int64 update_dt = 8;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000080;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 update_dt = 8;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000080);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // optional string secret = 9;
      private java.lang.Object secret_ = "";
      /**
       * <code>optional string secret = 9;</code>
       */
      public boolean hasSecret() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional string secret = 9;</code>
       */
      public java.lang.String getSecret() {
        java.lang.Object ref = secret_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          secret_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string secret = 9;</code>
       */
      public com.google.protobuf.ByteString
          getSecretBytes() {
        java.lang.Object ref = secret_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          secret_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string secret = 9;</code>
       */
      public Builder setSecret(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        secret_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string secret = 9;</code>
       */
      public Builder clearSecret() {
        bitField0_ = (bitField0_ & ~0x00000100);
        secret_ = getDefaultInstance().getSecret();
        onChanged();
        return this;
      }
      /**
       * <code>optional string secret = 9;</code>
       */
      public Builder setSecretBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        secret_ = value;
        onChanged();
        return this;
      }

      // optional string callback = 10;
      private java.lang.Object callback_ = "";
      /**
       * <code>optional string callback = 10;</code>
       */
      public boolean hasCallback() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional string callback = 10;</code>
       */
      public java.lang.String getCallback() {
        java.lang.Object ref = callback_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          callback_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string callback = 10;</code>
       */
      public com.google.protobuf.ByteString
          getCallbackBytes() {
        java.lang.Object ref = callback_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          callback_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string callback = 10;</code>
       */
      public Builder setCallback(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        callback_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string callback = 10;</code>
       */
      public Builder clearCallback() {
        bitField0_ = (bitField0_ & ~0x00000200);
        callback_ = getDefaultInstance().getCallback();
        onChanged();
        return this;
      }
      /**
       * <code>optional string callback = 10;</code>
       */
      public Builder setCallbackBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        callback_ = value;
        onChanged();
        return this;
      }

      // optional int32 automatic = 11;
      private int automatic_ ;
      /**
       * <code>optional int32 automatic = 11;</code>
       */
      public boolean hasAutomatic() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional int32 automatic = 11;</code>
       */
      public int getAutomatic() {
        return automatic_;
      }
      /**
       * <code>optional int32 automatic = 11;</code>
       */
      public Builder setAutomatic(int value) {
        bitField0_ |= 0x00000400;
        automatic_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 automatic = 11;</code>
       */
      public Builder clearAutomatic() {
        bitField0_ = (bitField0_ & ~0x00000400);
        automatic_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ChannelInfo)
    }

    static {
      defaultInstance = new ChannelInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ChannelInfo)
  }

  public interface ModifyChannelInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string channel_id = 1;
    /**
     * <code>required string channel_id = 1;</code>
     */
    boolean hasChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    java.lang.String getChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getChannelIdBytes();

    // required int32 type = 2;
    /**
     * <code>required int32 type = 2;</code>
     */
    boolean hasType();
    /**
     * <code>required int32 type = 2;</code>
     */
    int getType();

    // required string value = 3;
    /**
     * <code>required string value = 3;</code>
     */
    boolean hasValue();
    /**
     * <code>required string value = 3;</code>
     */
    java.lang.String getValue();
    /**
     * <code>required string value = 3;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code ModifyChannelInfo}
   */
  public static final class ModifyChannelInfo extends
      com.google.protobuf.GeneratedMessage
      implements ModifyChannelInfoOrBuilder {
    // Use ModifyChannelInfo.newBuilder() to construct.
    private ModifyChannelInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ModifyChannelInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ModifyChannelInfo defaultInstance;
    public static ModifyChannelInfo getDefaultInstance() {
      return defaultInstance;
    }

    public ModifyChannelInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ModifyChannelInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              channelId_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              type_ = input.readInt32();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              value_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyChannelInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyChannelInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo.class, cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<ModifyChannelInfo> PARSER =
        new com.google.protobuf.AbstractParser<ModifyChannelInfo>() {
      public ModifyChannelInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ModifyChannelInfo(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string channel_id = 1;
    public static final int CHANNEL_ID_FIELD_NUMBER = 1;
    private java.lang.Object channelId_;
    /**
     * <code>required string channel_id = 1;</code>
     */
    public boolean hasChannelId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public java.lang.String getChannelId() {
      java.lang.Object ref = channelId_;
      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();
        if (bs.isValidUtf8()) {
          channelId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getChannelIdBytes() {
      java.lang.Object ref = channelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        channelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 type = 2;
    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_;
    /**
     * <code>required int32 type = 2;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 type = 2;</code>
     */
    public int getType() {
      return type_;
    }

    // required string value = 3;
    public static final int VALUE_FIELD_NUMBER = 3;
    private java.lang.Object value_;
    /**
     * <code>required string value = 3;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string value = 3;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      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();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string value = 3;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      channelId_ = "";
      type_ = 0;
      value_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasChannelId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getValueBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getValueBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ModifyChannelInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ModifyChannelInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyChannelInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyChannelInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo.class, cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        channelId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyChannelInfo_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo build() {
        cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo result = new cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.channelId_ = channelId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo.getDefaultInstance()) return this;
        if (other.hasChannelId()) {
          bitField0_ |= 0x00000001;
          channelId_ = other.channelId_;
          onChanged();
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000004;
          value_ = other.value_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasChannelId()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ModifyChannelInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string channel_id = 1;
      private java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 1;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          channelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder clearChannelId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        channelId_ = getDefaultInstance().getChannelId();
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }

      // required int32 type = 2;
      private int type_ ;
      /**
       * <code>required int32 type = 2;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 type = 2;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>required int32 type = 2;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000002;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 type = 2;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = 0;
        onChanged();
        return this;
      }

      // required string value = 3;
      private java.lang.Object value_ = "";
      /**
       * <code>required string value = 3;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string value = 3;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string value = 3;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000004);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ModifyChannelInfo)
    }

    static {
      defaultInstance = new ModifyChannelInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ModifyChannelInfo)
  }

  public interface TransferChannelOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string channel_id = 1;
    /**
     * <code>required string channel_id = 1;</code>
     */
    boolean hasChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    java.lang.String getChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getChannelIdBytes();

    // required string new_owner = 2;
    /**
     * <code>required string new_owner = 2;</code>
     */
    boolean hasNewOwner();
    /**
     * <code>required string new_owner = 2;</code>
     */
    java.lang.String getNewOwner();
    /**
     * <code>required string new_owner = 2;</code>
     */
    com.google.protobuf.ByteString
        getNewOwnerBytes();
  }
  /**
   * Protobuf type {@code TransferChannel}
   */
  public static final class TransferChannel extends
      com.google.protobuf.GeneratedMessage
      implements TransferChannelOrBuilder {
    // Use TransferChannel.newBuilder() to construct.
    private TransferChannel(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TransferChannel(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final TransferChannel defaultInstance;
    public static TransferChannel getDefaultInstance() {
      return defaultInstance;
    }

    public TransferChannel getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private TransferChannel(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              channelId_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              newOwner_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_TransferChannel_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_TransferChannel_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.TransferChannel.class, cn.wildfirechat.proto.WFCMessage.TransferChannel.Builder.class);
    }

    public static com.google.protobuf.Parser<TransferChannel> PARSER =
        new com.google.protobuf.AbstractParser<TransferChannel>() {
      public TransferChannel parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TransferChannel(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string channel_id = 1;
    public static final int CHANNEL_ID_FIELD_NUMBER = 1;
    private java.lang.Object channelId_;
    /**
     * <code>required string channel_id = 1;</code>
     */
    public boolean hasChannelId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public java.lang.String getChannelId() {
      java.lang.Object ref = channelId_;
      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();
        if (bs.isValidUtf8()) {
          channelId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getChannelIdBytes() {
      java.lang.Object ref = channelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        channelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string new_owner = 2;
    public static final int NEW_OWNER_FIELD_NUMBER = 2;
    private java.lang.Object newOwner_;
    /**
     * <code>required string new_owner = 2;</code>
     */
    public boolean hasNewOwner() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string new_owner = 2;</code>
     */
    public java.lang.String getNewOwner() {
      java.lang.Object ref = newOwner_;
      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();
        if (bs.isValidUtf8()) {
          newOwner_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string new_owner = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNewOwnerBytes() {
      java.lang.Object ref = newOwner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        newOwner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      channelId_ = "";
      newOwner_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasChannelId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNewOwner()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getNewOwnerBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getNewOwnerBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferChannel parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.TransferChannel prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code TransferChannel}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.TransferChannelOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_TransferChannel_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_TransferChannel_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.TransferChannel.class, cn.wildfirechat.proto.WFCMessage.TransferChannel.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.TransferChannel.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        channelId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        newOwner_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_TransferChannel_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.TransferChannel getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.TransferChannel.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.TransferChannel build() {
        cn.wildfirechat.proto.WFCMessage.TransferChannel result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.TransferChannel buildPartial() {
        cn.wildfirechat.proto.WFCMessage.TransferChannel result = new cn.wildfirechat.proto.WFCMessage.TransferChannel(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.channelId_ = channelId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.newOwner_ = newOwner_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.TransferChannel) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.TransferChannel)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.TransferChannel other) {
        if (other == cn.wildfirechat.proto.WFCMessage.TransferChannel.getDefaultInstance()) return this;
        if (other.hasChannelId()) {
          bitField0_ |= 0x00000001;
          channelId_ = other.channelId_;
          onChanged();
        }
        if (other.hasNewOwner()) {
          bitField0_ |= 0x00000002;
          newOwner_ = other.newOwner_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasChannelId()) {
          
          return false;
        }
        if (!hasNewOwner()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.TransferChannel parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.TransferChannel) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string channel_id = 1;
      private java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 1;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          channelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder clearChannelId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        channelId_ = getDefaultInstance().getChannelId();
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }

      // required string new_owner = 2;
      private java.lang.Object newOwner_ = "";
      /**
       * <code>required string new_owner = 2;</code>
       */
      public boolean hasNewOwner() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public java.lang.String getNewOwner() {
        java.lang.Object ref = newOwner_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          newOwner_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNewOwnerBytes() {
        java.lang.Object ref = newOwner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          newOwner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public Builder setNewOwner(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        newOwner_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public Builder clearNewOwner() {
        bitField0_ = (bitField0_ & ~0x00000002);
        newOwner_ = getDefaultInstance().getNewOwner();
        onChanged();
        return this;
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public Builder setNewOwnerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        newOwner_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:TransferChannel)
    }

    static {
      defaultInstance = new TransferChannel(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:TransferChannel)
  }

  public interface PullChannelInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string channel_id = 1;
    /**
     * <code>required string channel_id = 1;</code>
     */
    boolean hasChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    java.lang.String getChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getChannelIdBytes();

    // required int64 head = 2;
    /**
     * <code>required int64 head = 2;</code>
     */
    boolean hasHead();
    /**
     * <code>required int64 head = 2;</code>
     */
    long getHead();
  }
  /**
   * Protobuf type {@code PullChannelInfo}
   */
  public static final class PullChannelInfo extends
      com.google.protobuf.GeneratedMessage
      implements PullChannelInfoOrBuilder {
    // Use PullChannelInfo.newBuilder() to construct.
    private PullChannelInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullChannelInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullChannelInfo defaultInstance;
    public static PullChannelInfo getDefaultInstance() {
      return defaultInstance;
    }

    public PullChannelInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullChannelInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              channelId_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              head_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullChannelInfo.class, cn.wildfirechat.proto.WFCMessage.PullChannelInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<PullChannelInfo> PARSER =
        new com.google.protobuf.AbstractParser<PullChannelInfo>() {
      public PullChannelInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullChannelInfo(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string channel_id = 1;
    public static final int CHANNEL_ID_FIELD_NUMBER = 1;
    private java.lang.Object channelId_;
    /**
     * <code>required string channel_id = 1;</code>
     */
    public boolean hasChannelId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public java.lang.String getChannelId() {
      java.lang.Object ref = channelId_;
      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();
        if (bs.isValidUtf8()) {
          channelId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getChannelIdBytes() {
      java.lang.Object ref = channelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        channelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int64 head = 2;
    public static final int HEAD_FIELD_NUMBER = 2;
    private long head_;
    /**
     * <code>required int64 head = 2;</code>
     */
    public boolean hasHead() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int64 head = 2;</code>
     */
    public long getHead() {
      return head_;
    }

    private void initFields() {
      channelId_ = "";
      head_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasChannelId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasHead()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, head_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, head_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullChannelInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullChannelInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullChannelInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullChannelInfo.class, cn.wildfirechat.proto.WFCMessage.PullChannelInfo.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullChannelInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        channelId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        head_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelInfo_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullChannelInfo getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullChannelInfo.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullChannelInfo build() {
        cn.wildfirechat.proto.WFCMessage.PullChannelInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullChannelInfo buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullChannelInfo result = new cn.wildfirechat.proto.WFCMessage.PullChannelInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.channelId_ = channelId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.head_ = head_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullChannelInfo) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullChannelInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullChannelInfo other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullChannelInfo.getDefaultInstance()) return this;
        if (other.hasChannelId()) {
          bitField0_ |= 0x00000001;
          channelId_ = other.channelId_;
          onChanged();
        }
        if (other.hasHead()) {
          setHead(other.getHead());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasChannelId()) {
          
          return false;
        }
        if (!hasHead()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullChannelInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullChannelInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string channel_id = 1;
      private java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 1;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          channelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder clearChannelId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        channelId_ = getDefaultInstance().getChannelId();
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }

      // required int64 head = 2;
      private long head_ ;
      /**
       * <code>required int64 head = 2;</code>
       */
      public boolean hasHead() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int64 head = 2;</code>
       */
      public long getHead() {
        return head_;
      }
      /**
       * <code>required int64 head = 2;</code>
       */
      public Builder setHead(long value) {
        bitField0_ |= 0x00000002;
        head_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 head = 2;</code>
       */
      public Builder clearHead() {
        bitField0_ = (bitField0_ & ~0x00000002);
        head_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:PullChannelInfo)
    }

    static {
      defaultInstance = new PullChannelInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullChannelInfo)
  }

  public interface PullChannelListenerOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string channel_id = 1;
    /**
     * <code>required string channel_id = 1;</code>
     */
    boolean hasChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    java.lang.String getChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getChannelIdBytes();

    // required int32 offset = 2;
    /**
     * <code>required int32 offset = 2;</code>
     */
    boolean hasOffset();
    /**
     * <code>required int32 offset = 2;</code>
     */
    int getOffset();

    // required int32 count = 3;
    /**
     * <code>required int32 count = 3;</code>
     */
    boolean hasCount();
    /**
     * <code>required int32 count = 3;</code>
     */
    int getCount();
  }
  /**
   * Protobuf type {@code PullChannelListener}
   */
  public static final class PullChannelListener extends
      com.google.protobuf.GeneratedMessage
      implements PullChannelListenerOrBuilder {
    // Use PullChannelListener.newBuilder() to construct.
    private PullChannelListener(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullChannelListener(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullChannelListener defaultInstance;
    public static PullChannelListener getDefaultInstance() {
      return defaultInstance;
    }

    public PullChannelListener getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullChannelListener(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              channelId_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              offset_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              count_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListener_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListener_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullChannelListener.class, cn.wildfirechat.proto.WFCMessage.PullChannelListener.Builder.class);
    }

    public static com.google.protobuf.Parser<PullChannelListener> PARSER =
        new com.google.protobuf.AbstractParser<PullChannelListener>() {
      public PullChannelListener parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullChannelListener(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string channel_id = 1;
    public static final int CHANNEL_ID_FIELD_NUMBER = 1;
    private java.lang.Object channelId_;
    /**
     * <code>required string channel_id = 1;</code>
     */
    public boolean hasChannelId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public java.lang.String getChannelId() {
      java.lang.Object ref = channelId_;
      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();
        if (bs.isValidUtf8()) {
          channelId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getChannelIdBytes() {
      java.lang.Object ref = channelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        channelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 offset = 2;
    public static final int OFFSET_FIELD_NUMBER = 2;
    private int offset_;
    /**
     * <code>required int32 offset = 2;</code>
     */
    public boolean hasOffset() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 offset = 2;</code>
     */
    public int getOffset() {
      return offset_;
    }

    // required int32 count = 3;
    public static final int COUNT_FIELD_NUMBER = 3;
    private int count_;
    /**
     * <code>required int32 count = 3;</code>
     */
    public boolean hasCount() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int32 count = 3;</code>
     */
    public int getCount() {
      return count_;
    }

    private void initFields() {
      channelId_ = "";
      offset_ = 0;
      count_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasChannelId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasOffset()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasCount()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, offset_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, count_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, offset_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, count_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListener parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullChannelListener prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullChannelListener}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullChannelListenerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListener_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListener_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullChannelListener.class, cn.wildfirechat.proto.WFCMessage.PullChannelListener.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullChannelListener.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        channelId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        offset_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        count_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListener_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullChannelListener getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullChannelListener.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullChannelListener build() {
        cn.wildfirechat.proto.WFCMessage.PullChannelListener result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullChannelListener buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullChannelListener result = new cn.wildfirechat.proto.WFCMessage.PullChannelListener(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.channelId_ = channelId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.offset_ = offset_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.count_ = count_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullChannelListener) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullChannelListener)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullChannelListener other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullChannelListener.getDefaultInstance()) return this;
        if (other.hasChannelId()) {
          bitField0_ |= 0x00000001;
          channelId_ = other.channelId_;
          onChanged();
        }
        if (other.hasOffset()) {
          setOffset(other.getOffset());
        }
        if (other.hasCount()) {
          setCount(other.getCount());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasChannelId()) {
          
          return false;
        }
        if (!hasOffset()) {
          
          return false;
        }
        if (!hasCount()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullChannelListener parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullChannelListener) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string channel_id = 1;
      private java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 1;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          channelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder clearChannelId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        channelId_ = getDefaultInstance().getChannelId();
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }

      // required int32 offset = 2;
      private int offset_ ;
      /**
       * <code>required int32 offset = 2;</code>
       */
      public boolean hasOffset() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 offset = 2;</code>
       */
      public int getOffset() {
        return offset_;
      }
      /**
       * <code>required int32 offset = 2;</code>
       */
      public Builder setOffset(int value) {
        bitField0_ |= 0x00000002;
        offset_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 offset = 2;</code>
       */
      public Builder clearOffset() {
        bitField0_ = (bitField0_ & ~0x00000002);
        offset_ = 0;
        onChanged();
        return this;
      }

      // required int32 count = 3;
      private int count_ ;
      /**
       * <code>required int32 count = 3;</code>
       */
      public boolean hasCount() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 count = 3;</code>
       */
      public int getCount() {
        return count_;
      }
      /**
       * <code>required int32 count = 3;</code>
       */
      public Builder setCount(int value) {
        bitField0_ |= 0x00000004;
        count_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 count = 3;</code>
       */
      public Builder clearCount() {
        bitField0_ = (bitField0_ & ~0x00000004);
        count_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:PullChannelListener)
    }

    static {
      defaultInstance = new PullChannelListener(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullChannelListener)
  }

  public interface PullChannelListenerResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 total_count = 1;
    /**
     * <code>required int32 total_count = 1;</code>
     */
    boolean hasTotalCount();
    /**
     * <code>required int32 total_count = 1;</code>
     */
    int getTotalCount();

    // required int32 offset = 2;
    /**
     * <code>required int32 offset = 2;</code>
     */
    boolean hasOffset();
    /**
     * <code>required int32 offset = 2;</code>
     */
    int getOffset();

    // repeated string listener = 3;
    /**
     * <code>repeated string listener = 3;</code>
     */
    java.util.List<java.lang.String>
    getListenerList();
    /**
     * <code>repeated string listener = 3;</code>
     */
    int getListenerCount();
    /**
     * <code>repeated string listener = 3;</code>
     */
    java.lang.String getListener(int index);
    /**
     * <code>repeated string listener = 3;</code>
     */
    com.google.protobuf.ByteString
        getListenerBytes(int index);
  }
  /**
   * Protobuf type {@code PullChannelListenerResult}
   */
  public static final class PullChannelListenerResult extends
      com.google.protobuf.GeneratedMessage
      implements PullChannelListenerResultOrBuilder {
    // Use PullChannelListenerResult.newBuilder() to construct.
    private PullChannelListenerResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullChannelListenerResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullChannelListenerResult defaultInstance;
    public static PullChannelListenerResult getDefaultInstance() {
      return defaultInstance;
    }

    public PullChannelListenerResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullChannelListenerResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              totalCount_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              offset_ = input.readInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                listener_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              listener_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          listener_ = new com.google.protobuf.UnmodifiableLazyStringList(listener_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListenerResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListenerResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult.class, cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult.Builder.class);
    }

    public static com.google.protobuf.Parser<PullChannelListenerResult> PARSER =
        new com.google.protobuf.AbstractParser<PullChannelListenerResult>() {
      public PullChannelListenerResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullChannelListenerResult(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int32 total_count = 1;
    public static final int TOTAL_COUNT_FIELD_NUMBER = 1;
    private int totalCount_;
    /**
     * <code>required int32 total_count = 1;</code>
     */
    public boolean hasTotalCount() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 total_count = 1;</code>
     */
    public int getTotalCount() {
      return totalCount_;
    }

    // required int32 offset = 2;
    public static final int OFFSET_FIELD_NUMBER = 2;
    private int offset_;
    /**
     * <code>required int32 offset = 2;</code>
     */
    public boolean hasOffset() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 offset = 2;</code>
     */
    public int getOffset() {
      return offset_;
    }

    // repeated string listener = 3;
    public static final int LISTENER_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList listener_;
    /**
     * <code>repeated string listener = 3;</code>
     */
    public java.util.List<java.lang.String>
        getListenerList() {
      return listener_;
    }
    /**
     * <code>repeated string listener = 3;</code>
     */
    public int getListenerCount() {
      return listener_.size();
    }
    /**
     * <code>repeated string listener = 3;</code>
     */
    public java.lang.String getListener(int index) {
      return listener_.get(index);
    }
    /**
     * <code>repeated string listener = 3;</code>
     */
    public com.google.protobuf.ByteString
        getListenerBytes(int index) {
      return listener_.getByteString(index);
    }

    private void initFields() {
      totalCount_ = 0;
      offset_ = 0;
      listener_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasTotalCount()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasOffset()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, totalCount_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, offset_);
      }
      for (int i = 0; i < listener_.size(); i++) {
        output.writeBytes(3, listener_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, totalCount_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, offset_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < listener_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(listener_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getListenerList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullChannelListenerResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullChannelListenerResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListenerResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListenerResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult.class, cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        totalCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        offset_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        listener_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullChannelListenerResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult build() {
        cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult result = new cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.totalCount_ = totalCount_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.offset_ = offset_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          listener_ = new com.google.protobuf.UnmodifiableLazyStringList(
              listener_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.listener_ = listener_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult.getDefaultInstance()) return this;
        if (other.hasTotalCount()) {
          setTotalCount(other.getTotalCount());
        }
        if (other.hasOffset()) {
          setOffset(other.getOffset());
        }
        if (!other.listener_.isEmpty()) {
          if (listener_.isEmpty()) {
            listener_ = other.listener_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureListenerIsMutable();
            listener_.addAll(other.listener_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTotalCount()) {
          
          return false;
        }
        if (!hasOffset()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullChannelListenerResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 total_count = 1;
      private int totalCount_ ;
      /**
       * <code>required int32 total_count = 1;</code>
       */
      public boolean hasTotalCount() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 total_count = 1;</code>
       */
      public int getTotalCount() {
        return totalCount_;
      }
      /**
       * <code>required int32 total_count = 1;</code>
       */
      public Builder setTotalCount(int value) {
        bitField0_ |= 0x00000001;
        totalCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 total_count = 1;</code>
       */
      public Builder clearTotalCount() {
        bitField0_ = (bitField0_ & ~0x00000001);
        totalCount_ = 0;
        onChanged();
        return this;
      }

      // required int32 offset = 2;
      private int offset_ ;
      /**
       * <code>required int32 offset = 2;</code>
       */
      public boolean hasOffset() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 offset = 2;</code>
       */
      public int getOffset() {
        return offset_;
      }
      /**
       * <code>required int32 offset = 2;</code>
       */
      public Builder setOffset(int value) {
        bitField0_ |= 0x00000002;
        offset_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 offset = 2;</code>
       */
      public Builder clearOffset() {
        bitField0_ = (bitField0_ & ~0x00000002);
        offset_ = 0;
        onChanged();
        return this;
      }

      // repeated string listener = 3;
      private com.google.protobuf.LazyStringList listener_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureListenerIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          listener_ = new com.google.protobuf.LazyStringArrayList(listener_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string listener = 3;</code>
       */
      public java.util.List<java.lang.String>
          getListenerList() {
        return java.util.Collections.unmodifiableList(listener_);
      }
      /**
       * <code>repeated string listener = 3;</code>
       */
      public int getListenerCount() {
        return listener_.size();
      }
      /**
       * <code>repeated string listener = 3;</code>
       */
      public java.lang.String getListener(int index) {
        return listener_.get(index);
      }
      /**
       * <code>repeated string listener = 3;</code>
       */
      public com.google.protobuf.ByteString
          getListenerBytes(int index) {
        return listener_.getByteString(index);
      }
      /**
       * <code>repeated string listener = 3;</code>
       */
      public Builder setListener(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureListenerIsMutable();
        listener_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string listener = 3;</code>
       */
      public Builder addListener(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureListenerIsMutable();
        listener_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string listener = 3;</code>
       */
      public Builder addAllListener(
          java.lang.Iterable<java.lang.String> values) {
        ensureListenerIsMutable();
        super.addAll(values, listener_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string listener = 3;</code>
       */
      public Builder clearListener() {
        listener_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string listener = 3;</code>
       */
      public Builder addListenerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureListenerIsMutable();
        listener_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:PullChannelListenerResult)
    }

    static {
      defaultInstance = new PullChannelListenerResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullChannelListenerResult)
  }

  public interface ListenChannelOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string channel_id = 1;
    /**
     * <code>required string channel_id = 1;</code>
     */
    boolean hasChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    java.lang.String getChannelId();
    /**
     * <code>required string channel_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getChannelIdBytes();

    // required int32 listen = 2;
    /**
     * <code>required int32 listen = 2;</code>
     */
    boolean hasListen();
    /**
     * <code>required int32 listen = 2;</code>
     */
    int getListen();
  }
  /**
   * Protobuf type {@code ListenChannel}
   */
  public static final class ListenChannel extends
      com.google.protobuf.GeneratedMessage
      implements ListenChannelOrBuilder {
    // Use ListenChannel.newBuilder() to construct.
    private ListenChannel(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ListenChannel(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ListenChannel defaultInstance;
    public static ListenChannel getDefaultInstance() {
      return defaultInstance;
    }

    public ListenChannel getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ListenChannel(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              channelId_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              listen_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ListenChannel_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ListenChannel_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ListenChannel.class, cn.wildfirechat.proto.WFCMessage.ListenChannel.Builder.class);
    }

    public static com.google.protobuf.Parser<ListenChannel> PARSER =
        new com.google.protobuf.AbstractParser<ListenChannel>() {
      public ListenChannel parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ListenChannel(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string channel_id = 1;
    public static final int CHANNEL_ID_FIELD_NUMBER = 1;
    private java.lang.Object channelId_;
    /**
     * <code>required string channel_id = 1;</code>
     */
    public boolean hasChannelId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public java.lang.String getChannelId() {
      java.lang.Object ref = channelId_;
      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();
        if (bs.isValidUtf8()) {
          channelId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string channel_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getChannelIdBytes() {
      java.lang.Object ref = channelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        channelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 listen = 2;
    public static final int LISTEN_FIELD_NUMBER = 2;
    private int listen_;
    /**
     * <code>required int32 listen = 2;</code>
     */
    public boolean hasListen() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 listen = 2;</code>
     */
    public int getListen() {
      return listen_;
    }

    private void initFields() {
      channelId_ = "";
      listen_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasChannelId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasListen()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, listen_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getChannelIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, listen_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ListenChannel parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ListenChannel prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ListenChannel}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ListenChannelOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ListenChannel_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ListenChannel_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ListenChannel.class, cn.wildfirechat.proto.WFCMessage.ListenChannel.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ListenChannel.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        channelId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        listen_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ListenChannel_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ListenChannel getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ListenChannel.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ListenChannel build() {
        cn.wildfirechat.proto.WFCMessage.ListenChannel result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ListenChannel buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ListenChannel result = new cn.wildfirechat.proto.WFCMessage.ListenChannel(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.channelId_ = channelId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.listen_ = listen_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ListenChannel) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ListenChannel)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ListenChannel other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ListenChannel.getDefaultInstance()) return this;
        if (other.hasChannelId()) {
          bitField0_ |= 0x00000001;
          channelId_ = other.channelId_;
          onChanged();
        }
        if (other.hasListen()) {
          setListen(other.getListen());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasChannelId()) {
          
          return false;
        }
        if (!hasListen()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ListenChannel parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ListenChannel) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string channel_id = 1;
      private java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 1;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          channelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder clearChannelId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        channelId_ = getDefaultInstance().getChannelId();
        onChanged();
        return this;
      }
      /**
       * <code>required string channel_id = 1;</code>
       */
      public Builder setChannelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        channelId_ = value;
        onChanged();
        return this;
      }

      // required int32 listen = 2;
      private int listen_ ;
      /**
       * <code>required int32 listen = 2;</code>
       */
      public boolean hasListen() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 listen = 2;</code>
       */
      public int getListen() {
        return listen_;
      }
      /**
       * <code>required int32 listen = 2;</code>
       */
      public Builder setListen(int value) {
        bitField0_ |= 0x00000002;
        listen_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 listen = 2;</code>
       */
      public Builder clearListen() {
        bitField0_ = (bitField0_ & ~0x00000002);
        listen_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ListenChannel)
    }

    static {
      defaultInstance = new ListenChannel(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ListenChannel)
  }

  public interface SearchChannelResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .ChannelInfo channel = 1;
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.ChannelInfo> 
        getChannelList();
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.ChannelInfo getChannel(int index);
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    int getChannelCount();
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder> 
        getChannelOrBuilderList();
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder getChannelOrBuilder(
        int index);

    // required string keyword = 2;
    /**
     * <code>required string keyword = 2;</code>
     */
    boolean hasKeyword();
    /**
     * <code>required string keyword = 2;</code>
     */
    java.lang.String getKeyword();
    /**
     * <code>required string keyword = 2;</code>
     */
    com.google.protobuf.ByteString
        getKeywordBytes();
  }
  /**
   * Protobuf type {@code SearchChannelResult}
   */
  public static final class SearchChannelResult extends
      com.google.protobuf.GeneratedMessage
      implements SearchChannelResultOrBuilder {
    // Use SearchChannelResult.newBuilder() to construct.
    private SearchChannelResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SearchChannelResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SearchChannelResult defaultInstance;
    public static SearchChannelResult getDefaultInstance() {
      return defaultInstance;
    }

    public SearchChannelResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SearchChannelResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                channel_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.ChannelInfo>();
                mutable_bitField0_ |= 0x00000001;
              }
              channel_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.ChannelInfo.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              bitField0_ |= 0x00000001;
              keyword_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          channel_ = java.util.Collections.unmodifiableList(channel_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_SearchChannelResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_SearchChannelResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.SearchChannelResult.class, cn.wildfirechat.proto.WFCMessage.SearchChannelResult.Builder.class);
    }

    public static com.google.protobuf.Parser<SearchChannelResult> PARSER =
        new com.google.protobuf.AbstractParser<SearchChannelResult>() {
      public SearchChannelResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SearchChannelResult(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // repeated .ChannelInfo channel = 1;
    public static final int CHANNEL_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.ChannelInfo> channel_;
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.ChannelInfo> getChannelList() {
      return channel_;
    }
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder> 
        getChannelOrBuilderList() {
      return channel_;
    }
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    public int getChannelCount() {
      return channel_.size();
    }
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.ChannelInfo getChannel(int index) {
      return channel_.get(index);
    }
    /**
     * <code>repeated .ChannelInfo channel = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder getChannelOrBuilder(
        int index) {
      return channel_.get(index);
    }

    // required string keyword = 2;
    public static final int KEYWORD_FIELD_NUMBER = 2;
    private java.lang.Object keyword_;
    /**
     * <code>required string keyword = 2;</code>
     */
    public boolean hasKeyword() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string keyword = 2;</code>
     */
    public java.lang.String getKeyword() {
      java.lang.Object ref = keyword_;
      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();
        if (bs.isValidUtf8()) {
          keyword_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string keyword = 2;</code>
     */
    public com.google.protobuf.ByteString
        getKeywordBytes() {
      java.lang.Object ref = keyword_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        keyword_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      channel_ = java.util.Collections.emptyList();
      keyword_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasKeyword()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getChannelCount(); i++) {
        if (!getChannel(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < channel_.size(); i++) {
        output.writeMessage(1, channel_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(2, getKeywordBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < channel_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, channel_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getKeywordBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchChannelResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.SearchChannelResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SearchChannelResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.SearchChannelResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_SearchChannelResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_SearchChannelResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.SearchChannelResult.class, cn.wildfirechat.proto.WFCMessage.SearchChannelResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.SearchChannelResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getChannelFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (channelBuilder_ == null) {
          channel_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          channelBuilder_.clear();
        }
        keyword_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_SearchChannelResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.SearchChannelResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.SearchChannelResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.SearchChannelResult build() {
        cn.wildfirechat.proto.WFCMessage.SearchChannelResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.SearchChannelResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.SearchChannelResult result = new cn.wildfirechat.proto.WFCMessage.SearchChannelResult(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (channelBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            channel_ = java.util.Collections.unmodifiableList(channel_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.channel_ = channel_;
        } else {
          result.channel_ = channelBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.keyword_ = keyword_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.SearchChannelResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.SearchChannelResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.SearchChannelResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.SearchChannelResult.getDefaultInstance()) return this;
        if (channelBuilder_ == null) {
          if (!other.channel_.isEmpty()) {
            if (channel_.isEmpty()) {
              channel_ = other.channel_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureChannelIsMutable();
              channel_.addAll(other.channel_);
            }
            onChanged();
          }
        } else {
          if (!other.channel_.isEmpty()) {
            if (channelBuilder_.isEmpty()) {
              channelBuilder_.dispose();
              channelBuilder_ = null;
              channel_ = other.channel_;
              bitField0_ = (bitField0_ & ~0x00000001);
              channelBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getChannelFieldBuilder() : null;
            } else {
              channelBuilder_.addAllMessages(other.channel_);
            }
          }
        }
        if (other.hasKeyword()) {
          bitField0_ |= 0x00000002;
          keyword_ = other.keyword_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasKeyword()) {
          
          return false;
        }
        for (int i = 0; i < getChannelCount(); i++) {
          if (!getChannel(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.SearchChannelResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.SearchChannelResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .ChannelInfo channel = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.ChannelInfo> channel_ =
        java.util.Collections.emptyList();
      private void ensureChannelIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          channel_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.ChannelInfo>(channel_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.ChannelInfo, cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder, cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder> channelBuilder_;

      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.ChannelInfo> getChannelList() {
        if (channelBuilder_ == null) {
          return java.util.Collections.unmodifiableList(channel_);
        } else {
          return channelBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public int getChannelCount() {
        if (channelBuilder_ == null) {
          return channel_.size();
        } else {
          return channelBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.ChannelInfo getChannel(int index) {
        if (channelBuilder_ == null) {
          return channel_.get(index);
        } else {
          return channelBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public Builder setChannel(
          int index, cn.wildfirechat.proto.WFCMessage.ChannelInfo value) {
        if (channelBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChannelIsMutable();
          channel_.set(index, value);
          onChanged();
        } else {
          channelBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public Builder setChannel(
          int index, cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder builderForValue) {
        if (channelBuilder_ == null) {
          ensureChannelIsMutable();
          channel_.set(index, builderForValue.build());
          onChanged();
        } else {
          channelBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public Builder addChannel(cn.wildfirechat.proto.WFCMessage.ChannelInfo value) {
        if (channelBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChannelIsMutable();
          channel_.add(value);
          onChanged();
        } else {
          channelBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public Builder addChannel(
          int index, cn.wildfirechat.proto.WFCMessage.ChannelInfo value) {
        if (channelBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChannelIsMutable();
          channel_.add(index, value);
          onChanged();
        } else {
          channelBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public Builder addChannel(
          cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder builderForValue) {
        if (channelBuilder_ == null) {
          ensureChannelIsMutable();
          channel_.add(builderForValue.build());
          onChanged();
        } else {
          channelBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public Builder addChannel(
          int index, cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder builderForValue) {
        if (channelBuilder_ == null) {
          ensureChannelIsMutable();
          channel_.add(index, builderForValue.build());
          onChanged();
        } else {
          channelBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public Builder addAllChannel(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.ChannelInfo> values) {
        if (channelBuilder_ == null) {
          ensureChannelIsMutable();
          super.addAll(values, channel_);
          onChanged();
        } else {
          channelBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public Builder clearChannel() {
        if (channelBuilder_ == null) {
          channel_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          channelBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public Builder removeChannel(int index) {
        if (channelBuilder_ == null) {
          ensureChannelIsMutable();
          channel_.remove(index);
          onChanged();
        } else {
          channelBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder getChannelBuilder(
          int index) {
        return getChannelFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder getChannelOrBuilder(
          int index) {
        if (channelBuilder_ == null) {
          return channel_.get(index);  } else {
          return channelBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder> 
           getChannelOrBuilderList() {
        if (channelBuilder_ != null) {
          return channelBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(channel_);
        }
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder addChannelBuilder() {
        return getChannelFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.ChannelInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder addChannelBuilder(
          int index) {
        return getChannelFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.ChannelInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .ChannelInfo channel = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder> 
           getChannelBuilderList() {
        return getChannelFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.ChannelInfo, cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder, cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder> 
          getChannelFieldBuilder() {
        if (channelBuilder_ == null) {
          channelBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.ChannelInfo, cn.wildfirechat.proto.WFCMessage.ChannelInfo.Builder, cn.wildfirechat.proto.WFCMessage.ChannelInfoOrBuilder>(
                  channel_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          channel_ = null;
        }
        return channelBuilder_;
      }

      // required string keyword = 2;
      private java.lang.Object keyword_ = "";
      /**
       * <code>required string keyword = 2;</code>
       */
      public boolean hasKeyword() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string keyword = 2;</code>
       */
      public java.lang.String getKeyword() {
        java.lang.Object ref = keyword_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          keyword_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string keyword = 2;</code>
       */
      public com.google.protobuf.ByteString
          getKeywordBytes() {
        java.lang.Object ref = keyword_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          keyword_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string keyword = 2;</code>
       */
      public Builder setKeyword(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        keyword_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string keyword = 2;</code>
       */
      public Builder clearKeyword() {
        bitField0_ = (bitField0_ & ~0x00000002);
        keyword_ = getDefaultInstance().getKeyword();
        onChanged();
        return this;
      }
      /**
       * <code>required string keyword = 2;</code>
       */
      public Builder setKeywordBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        keyword_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:SearchChannelResult)
    }

    static {
      defaultInstance = new SearchChannelResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:SearchChannelResult)
  }

  public interface MessageContentOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 type = 1;
    /**
     * <code>required int32 type = 1;</code>
     */
    boolean hasType();
    /**
     * <code>required int32 type = 1;</code>
     */
    int getType();

    // optional string searchable_content = 2;
    /**
     * <code>optional string searchable_content = 2;</code>
     */
    boolean hasSearchableContent();
    /**
     * <code>optional string searchable_content = 2;</code>
     */
    java.lang.String getSearchableContent();
    /**
     * <code>optional string searchable_content = 2;</code>
     */
    com.google.protobuf.ByteString
        getSearchableContentBytes();

    // optional string push_content = 3;
    /**
     * <code>optional string push_content = 3;</code>
     */
    boolean hasPushContent();
    /**
     * <code>optional string push_content = 3;</code>
     */
    java.lang.String getPushContent();
    /**
     * <code>optional string push_content = 3;</code>
     */
    com.google.protobuf.ByteString
        getPushContentBytes();

    // optional string content = 4;
    /**
     * <code>optional string content = 4;</code>
     */
    boolean hasContent();
    /**
     * <code>optional string content = 4;</code>
     */
    java.lang.String getContent();
    /**
     * <code>optional string content = 4;</code>
     */
    com.google.protobuf.ByteString
        getContentBytes();

    // optional bytes data = 5;
    /**
     * <code>optional bytes data = 5;</code>
     */
    boolean hasData();
    /**
     * <code>optional bytes data = 5;</code>
     */
    com.google.protobuf.ByteString getData();

    // optional int32 mediaType = 6;
    /**
     * <code>optional int32 mediaType = 6;</code>
     */
    boolean hasMediaType();
    /**
     * <code>optional int32 mediaType = 6;</code>
     */
    int getMediaType();

    // optional string remoteMediaUrl = 7;
    /**
     * <code>optional string remoteMediaUrl = 7;</code>
     */
    boolean hasRemoteMediaUrl();
    /**
     * <code>optional string remoteMediaUrl = 7;</code>
     */
    java.lang.String getRemoteMediaUrl();
    /**
     * <code>optional string remoteMediaUrl = 7;</code>
     */
    com.google.protobuf.ByteString
        getRemoteMediaUrlBytes();

    // optional int32 persist_flag = 8;
    /**
     * <code>optional int32 persist_flag = 8;</code>
     */
    boolean hasPersistFlag();
    /**
     * <code>optional int32 persist_flag = 8;</code>
     */
    int getPersistFlag();

    // optional int32 expire_duration = 9;
    /**
     * <code>optional int32 expire_duration = 9;</code>
     */
    boolean hasExpireDuration();
    /**
     * <code>optional int32 expire_duration = 9;</code>
     */
    int getExpireDuration();

    // optional int32 mentioned_type = 10;
    /**
     * <code>optional int32 mentioned_type = 10;</code>
     */
    boolean hasMentionedType();
    /**
     * <code>optional int32 mentioned_type = 10;</code>
     */
    int getMentionedType();

    // repeated string mentioned_target = 11;
    /**
     * <code>repeated string mentioned_target = 11;</code>
     */
    java.util.List<java.lang.String>
    getMentionedTargetList();
    /**
     * <code>repeated string mentioned_target = 11;</code>
     */
    int getMentionedTargetCount();
    /**
     * <code>repeated string mentioned_target = 11;</code>
     */
    java.lang.String getMentionedTarget(int index);
    /**
     * <code>repeated string mentioned_target = 11;</code>
     */
    com.google.protobuf.ByteString
        getMentionedTargetBytes(int index);
  }
  /**
   * Protobuf type {@code MessageContent}
   */
  public static final class MessageContent extends
      com.google.protobuf.GeneratedMessage
      implements MessageContentOrBuilder {
    // Use MessageContent.newBuilder() to construct.
    private MessageContent(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private MessageContent(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final MessageContent defaultInstance;
    public static MessageContent getDefaultInstance() {
      return defaultInstance;
    }

    public MessageContent getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private MessageContent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              type_ = input.readInt32();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              searchableContent_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              pushContent_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              content_ = input.readBytes();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              data_ = input.readBytes();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              mediaType_ = input.readInt32();
              break;
            }
            case 58: {
              bitField0_ |= 0x00000040;
              remoteMediaUrl_ = input.readBytes();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              persistFlag_ = input.readInt32();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000100;
              expireDuration_ = input.readInt32();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000200;
              mentionedType_ = input.readInt32();
              break;
            }
            case 90: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                mentionedTarget_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000400;
              }
              mentionedTarget_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          mentionedTarget_ = new com.google.protobuf.UnmodifiableLazyStringList(mentionedTarget_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_MessageContent_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_MessageContent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.MessageContent.class, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder.class);
    }

    public static com.google.protobuf.Parser<MessageContent> PARSER =
        new com.google.protobuf.AbstractParser<MessageContent>() {
      public MessageContent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new MessageContent(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int32 type = 1;
    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_;
    /**
     * <code>required int32 type = 1;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 type = 1;</code>
     */
    public int getType() {
      return type_;
    }

    // optional string searchable_content = 2;
    public static final int SEARCHABLE_CONTENT_FIELD_NUMBER = 2;
    private java.lang.Object searchableContent_;
    /**
     * <code>optional string searchable_content = 2;</code>
     */
    public boolean hasSearchableContent() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string searchable_content = 2;</code>
     */
    public java.lang.String getSearchableContent() {
      java.lang.Object ref = searchableContent_;
      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();
        if (bs.isValidUtf8()) {
          searchableContent_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string searchable_content = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSearchableContentBytes() {
      java.lang.Object ref = searchableContent_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        searchableContent_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string push_content = 3;
    public static final int PUSH_CONTENT_FIELD_NUMBER = 3;
    private java.lang.Object pushContent_;
    /**
     * <code>optional string push_content = 3;</code>
     */
    public boolean hasPushContent() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string push_content = 3;</code>
     */
    public java.lang.String getPushContent() {
      java.lang.Object ref = pushContent_;
      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();
        if (bs.isValidUtf8()) {
          pushContent_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string push_content = 3;</code>
     */
    public com.google.protobuf.ByteString
        getPushContentBytes() {
      java.lang.Object ref = pushContent_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pushContent_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string content = 4;
    public static final int CONTENT_FIELD_NUMBER = 4;
    private java.lang.Object content_;
    /**
     * <code>optional string content = 4;</code>
     */
    public boolean hasContent() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string content = 4;</code>
     */
    public java.lang.String getContent() {
      java.lang.Object ref = content_;
      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();
        if (bs.isValidUtf8()) {
          content_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string content = 4;</code>
     */
    public com.google.protobuf.ByteString
        getContentBytes() {
      java.lang.Object ref = content_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        content_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional bytes data = 5;
    public static final int DATA_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString data_;
    /**
     * <code>optional bytes data = 5;</code>
     */
    public boolean hasData() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional bytes data = 5;</code>
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }

    // optional int32 mediaType = 6;
    public static final int MEDIATYPE_FIELD_NUMBER = 6;
    private int mediaType_;
    /**
     * <code>optional int32 mediaType = 6;</code>
     */
    public boolean hasMediaType() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int32 mediaType = 6;</code>
     */
    public int getMediaType() {
      return mediaType_;
    }

    // optional string remoteMediaUrl = 7;
    public static final int REMOTEMEDIAURL_FIELD_NUMBER = 7;
    private java.lang.Object remoteMediaUrl_;
    /**
     * <code>optional string remoteMediaUrl = 7;</code>
     */
    public boolean hasRemoteMediaUrl() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional string remoteMediaUrl = 7;</code>
     */
    public java.lang.String getRemoteMediaUrl() {
      java.lang.Object ref = remoteMediaUrl_;
      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();
        if (bs.isValidUtf8()) {
          remoteMediaUrl_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string remoteMediaUrl = 7;</code>
     */
    public com.google.protobuf.ByteString
        getRemoteMediaUrlBytes() {
      java.lang.Object ref = remoteMediaUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        remoteMediaUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 persist_flag = 8;
    public static final int PERSIST_FLAG_FIELD_NUMBER = 8;
    private int persistFlag_;
    /**
     * <code>optional int32 persist_flag = 8;</code>
     */
    public boolean hasPersistFlag() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional int32 persist_flag = 8;</code>
     */
    public int getPersistFlag() {
      return persistFlag_;
    }

    // optional int32 expire_duration = 9;
    public static final int EXPIRE_DURATION_FIELD_NUMBER = 9;
    private int expireDuration_;
    /**
     * <code>optional int32 expire_duration = 9;</code>
     */
    public boolean hasExpireDuration() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional int32 expire_duration = 9;</code>
     */
    public int getExpireDuration() {
      return expireDuration_;
    }

    // optional int32 mentioned_type = 10;
    public static final int MENTIONED_TYPE_FIELD_NUMBER = 10;
    private int mentionedType_;
    /**
     * <code>optional int32 mentioned_type = 10;</code>
     */
    public boolean hasMentionedType() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional int32 mentioned_type = 10;</code>
     */
    public int getMentionedType() {
      return mentionedType_;
    }

    // repeated string mentioned_target = 11;
    public static final int MENTIONED_TARGET_FIELD_NUMBER = 11;
    private com.google.protobuf.LazyStringList mentionedTarget_;
    /**
     * <code>repeated string mentioned_target = 11;</code>
     */
    public java.util.List<java.lang.String>
        getMentionedTargetList() {
      return mentionedTarget_;
    }
    /**
     * <code>repeated string mentioned_target = 11;</code>
     */
    public int getMentionedTargetCount() {
      return mentionedTarget_.size();
    }
    /**
     * <code>repeated string mentioned_target = 11;</code>
     */
    public java.lang.String getMentionedTarget(int index) {
      return mentionedTarget_.get(index);
    }
    /**
     * <code>repeated string mentioned_target = 11;</code>
     */
    public com.google.protobuf.ByteString
        getMentionedTargetBytes(int index) {
      return mentionedTarget_.getByteString(index);
    }

    private void initFields() {
      type_ = 0;
      searchableContent_ = "";
      pushContent_ = "";
      content_ = "";
      data_ = com.google.protobuf.ByteString.EMPTY;
      mediaType_ = 0;
      remoteMediaUrl_ = "";
      persistFlag_ = 0;
      expireDuration_ = 0;
      mentionedType_ = 0;
      mentionedTarget_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getSearchableContentBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getPushContentBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getContentBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, data_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(6, mediaType_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(7, getRemoteMediaUrlBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeInt32(8, persistFlag_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeInt32(9, expireDuration_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeInt32(10, mentionedType_);
      }
      for (int i = 0; i < mentionedTarget_.size(); i++) {
        output.writeBytes(11, mentionedTarget_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getSearchableContentBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getPushContentBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getContentBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, data_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, mediaType_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getRemoteMediaUrlBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, persistFlag_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(9, expireDuration_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(10, mentionedType_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < mentionedTarget_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(mentionedTarget_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getMentionedTargetList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.MessageContent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.MessageContent prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code MessageContent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_MessageContent_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_MessageContent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.MessageContent.class, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        searchableContent_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        pushContent_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        content_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        data_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        mediaType_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        remoteMediaUrl_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        persistFlag_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        expireDuration_ = 0;
        bitField0_ = (bitField0_ & ~0x00000100);
        mentionedType_ = 0;
        bitField0_ = (bitField0_ & ~0x00000200);
        mentionedTarget_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_MessageContent_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.MessageContent getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.MessageContent build() {
        cn.wildfirechat.proto.WFCMessage.MessageContent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.MessageContent buildPartial() {
        cn.wildfirechat.proto.WFCMessage.MessageContent result = new cn.wildfirechat.proto.WFCMessage.MessageContent(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.searchableContent_ = searchableContent_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.pushContent_ = pushContent_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.content_ = content_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.data_ = data_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.mediaType_ = mediaType_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.remoteMediaUrl_ = remoteMediaUrl_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.persistFlag_ = persistFlag_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.expireDuration_ = expireDuration_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.mentionedType_ = mentionedType_;
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          mentionedTarget_ = new com.google.protobuf.UnmodifiableLazyStringList(
              mentionedTarget_);
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.mentionedTarget_ = mentionedTarget_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.MessageContent) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.MessageContent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.MessageContent other) {
        if (other == cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasSearchableContent()) {
          bitField0_ |= 0x00000002;
          searchableContent_ = other.searchableContent_;
          onChanged();
        }
        if (other.hasPushContent()) {
          bitField0_ |= 0x00000004;
          pushContent_ = other.pushContent_;
          onChanged();
        }
        if (other.hasContent()) {
          bitField0_ |= 0x00000008;
          content_ = other.content_;
          onChanged();
        }
        if (other.hasData()) {
          setData(other.getData());
        }
        if (other.hasMediaType()) {
          setMediaType(other.getMediaType());
        }
        if (other.hasRemoteMediaUrl()) {
          bitField0_ |= 0x00000040;
          remoteMediaUrl_ = other.remoteMediaUrl_;
          onChanged();
        }
        if (other.hasPersistFlag()) {
          setPersistFlag(other.getPersistFlag());
        }
        if (other.hasExpireDuration()) {
          setExpireDuration(other.getExpireDuration());
        }
        if (other.hasMentionedType()) {
          setMentionedType(other.getMentionedType());
        }
        if (!other.mentionedTarget_.isEmpty()) {
          if (mentionedTarget_.isEmpty()) {
            mentionedTarget_ = other.mentionedTarget_;
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            ensureMentionedTargetIsMutable();
            mentionedTarget_.addAll(other.mentionedTarget_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.MessageContent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.MessageContent) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 type = 1;
      private int type_ ;
      /**
       * <code>required int32 type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000001;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        onChanged();
        return this;
      }

      // optional string searchable_content = 2;
      private java.lang.Object searchableContent_ = "";
      /**
       * <code>optional string searchable_content = 2;</code>
       */
      public boolean hasSearchableContent() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string searchable_content = 2;</code>
       */
      public java.lang.String getSearchableContent() {
        java.lang.Object ref = searchableContent_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          searchableContent_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string searchable_content = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSearchableContentBytes() {
        java.lang.Object ref = searchableContent_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          searchableContent_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string searchable_content = 2;</code>
       */
      public Builder setSearchableContent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        searchableContent_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string searchable_content = 2;</code>
       */
      public Builder clearSearchableContent() {
        bitField0_ = (bitField0_ & ~0x00000002);
        searchableContent_ = getDefaultInstance().getSearchableContent();
        onChanged();
        return this;
      }
      /**
       * <code>optional string searchable_content = 2;</code>
       */
      public Builder setSearchableContentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        searchableContent_ = value;
        onChanged();
        return this;
      }

      // optional string push_content = 3;
      private java.lang.Object pushContent_ = "";
      /**
       * <code>optional string push_content = 3;</code>
       */
      public boolean hasPushContent() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string push_content = 3;</code>
       */
      public java.lang.String getPushContent() {
        java.lang.Object ref = pushContent_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          pushContent_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string push_content = 3;</code>
       */
      public com.google.protobuf.ByteString
          getPushContentBytes() {
        java.lang.Object ref = pushContent_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pushContent_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string push_content = 3;</code>
       */
      public Builder setPushContent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        pushContent_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string push_content = 3;</code>
       */
      public Builder clearPushContent() {
        bitField0_ = (bitField0_ & ~0x00000004);
        pushContent_ = getDefaultInstance().getPushContent();
        onChanged();
        return this;
      }
      /**
       * <code>optional string push_content = 3;</code>
       */
      public Builder setPushContentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        pushContent_ = value;
        onChanged();
        return this;
      }

      // optional string content = 4;
      private java.lang.Object content_ = "";
      /**
       * <code>optional string content = 4;</code>
       */
      public boolean hasContent() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string content = 4;</code>
       */
      public java.lang.String getContent() {
        java.lang.Object ref = content_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          content_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string content = 4;</code>
       */
      public com.google.protobuf.ByteString
          getContentBytes() {
        java.lang.Object ref = content_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          content_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string content = 4;</code>
       */
      public Builder setContent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        content_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string content = 4;</code>
       */
      public Builder clearContent() {
        bitField0_ = (bitField0_ & ~0x00000008);
        content_ = getDefaultInstance().getContent();
        onChanged();
        return this;
      }
      /**
       * <code>optional string content = 4;</code>
       */
      public Builder setContentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        content_ = value;
        onChanged();
        return this;
      }

      // optional bytes data = 5;
      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes data = 5;</code>
       */
      public boolean hasData() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional bytes data = 5;</code>
       */
      public com.google.protobuf.ByteString getData() {
        return data_;
      }
      /**
       * <code>optional bytes data = 5;</code>
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        data_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes data = 5;</code>
       */
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000010);
        data_ = getDefaultInstance().getData();
        onChanged();
        return this;
      }

      // optional int32 mediaType = 6;
      private int mediaType_ ;
      /**
       * <code>optional int32 mediaType = 6;</code>
       */
      public boolean hasMediaType() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int32 mediaType = 6;</code>
       */
      public int getMediaType() {
        return mediaType_;
      }
      /**
       * <code>optional int32 mediaType = 6;</code>
       */
      public Builder setMediaType(int value) {
        bitField0_ |= 0x00000020;
        mediaType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 mediaType = 6;</code>
       */
      public Builder clearMediaType() {
        bitField0_ = (bitField0_ & ~0x00000020);
        mediaType_ = 0;
        onChanged();
        return this;
      }

      // optional string remoteMediaUrl = 7;
      private java.lang.Object remoteMediaUrl_ = "";
      /**
       * <code>optional string remoteMediaUrl = 7;</code>
       */
      public boolean hasRemoteMediaUrl() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional string remoteMediaUrl = 7;</code>
       */
      public java.lang.String getRemoteMediaUrl() {
        java.lang.Object ref = remoteMediaUrl_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          remoteMediaUrl_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string remoteMediaUrl = 7;</code>
       */
      public com.google.protobuf.ByteString
          getRemoteMediaUrlBytes() {
        java.lang.Object ref = remoteMediaUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          remoteMediaUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string remoteMediaUrl = 7;</code>
       */
      public Builder setRemoteMediaUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        remoteMediaUrl_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string remoteMediaUrl = 7;</code>
       */
      public Builder clearRemoteMediaUrl() {
        bitField0_ = (bitField0_ & ~0x00000040);
        remoteMediaUrl_ = getDefaultInstance().getRemoteMediaUrl();
        onChanged();
        return this;
      }
      /**
       * <code>optional string remoteMediaUrl = 7;</code>
       */
      public Builder setRemoteMediaUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        remoteMediaUrl_ = value;
        onChanged();
        return this;
      }

      // optional int32 persist_flag = 8;
      private int persistFlag_ ;
      /**
       * <code>optional int32 persist_flag = 8;</code>
       */
      public boolean hasPersistFlag() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int32 persist_flag = 8;</code>
       */
      public int getPersistFlag() {
        return persistFlag_;
      }
      /**
       * <code>optional int32 persist_flag = 8;</code>
       */
      public Builder setPersistFlag(int value) {
        bitField0_ |= 0x00000080;
        persistFlag_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 persist_flag = 8;</code>
       */
      public Builder clearPersistFlag() {
        bitField0_ = (bitField0_ & ~0x00000080);
        persistFlag_ = 0;
        onChanged();
        return this;
      }

      // optional int32 expire_duration = 9;
      private int expireDuration_ ;
      /**
       * <code>optional int32 expire_duration = 9;</code>
       */
      public boolean hasExpireDuration() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional int32 expire_duration = 9;</code>
       */
      public int getExpireDuration() {
        return expireDuration_;
      }
      /**
       * <code>optional int32 expire_duration = 9;</code>
       */
      public Builder setExpireDuration(int value) {
        bitField0_ |= 0x00000100;
        expireDuration_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 expire_duration = 9;</code>
       */
      public Builder clearExpireDuration() {
        bitField0_ = (bitField0_ & ~0x00000100);
        expireDuration_ = 0;
        onChanged();
        return this;
      }

      // optional int32 mentioned_type = 10;
      private int mentionedType_ ;
      /**
       * <code>optional int32 mentioned_type = 10;</code>
       */
      public boolean hasMentionedType() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional int32 mentioned_type = 10;</code>
       */
      public int getMentionedType() {
        return mentionedType_;
      }
      /**
       * <code>optional int32 mentioned_type = 10;</code>
       */
      public Builder setMentionedType(int value) {
        bitField0_ |= 0x00000200;
        mentionedType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 mentioned_type = 10;</code>
       */
      public Builder clearMentionedType() {
        bitField0_ = (bitField0_ & ~0x00000200);
        mentionedType_ = 0;
        onChanged();
        return this;
      }

      // repeated string mentioned_target = 11;
      private com.google.protobuf.LazyStringList mentionedTarget_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureMentionedTargetIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          mentionedTarget_ = new com.google.protobuf.LazyStringArrayList(mentionedTarget_);
          bitField0_ |= 0x00000400;
         }
      }
      /**
       * <code>repeated string mentioned_target = 11;</code>
       */
      public java.util.List<java.lang.String>
          getMentionedTargetList() {
        return java.util.Collections.unmodifiableList(mentionedTarget_);
      }
      /**
       * <code>repeated string mentioned_target = 11;</code>
       */
      public int getMentionedTargetCount() {
        return mentionedTarget_.size();
      }
      /**
       * <code>repeated string mentioned_target = 11;</code>
       */
      public java.lang.String getMentionedTarget(int index) {
        return mentionedTarget_.get(index);
      }
      /**
       * <code>repeated string mentioned_target = 11;</code>
       */
      public com.google.protobuf.ByteString
          getMentionedTargetBytes(int index) {
        return mentionedTarget_.getByteString(index);
      }
      /**
       * <code>repeated string mentioned_target = 11;</code>
       */
      public Builder setMentionedTarget(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMentionedTargetIsMutable();
        mentionedTarget_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string mentioned_target = 11;</code>
       */
      public Builder addMentionedTarget(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMentionedTargetIsMutable();
        mentionedTarget_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string mentioned_target = 11;</code>
       */
      public Builder addAllMentionedTarget(
          java.lang.Iterable<java.lang.String> values) {
        ensureMentionedTargetIsMutable();
        super.addAll(values, mentionedTarget_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string mentioned_target = 11;</code>
       */
      public Builder clearMentionedTarget() {
        mentionedTarget_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string mentioned_target = 11;</code>
       */
      public Builder addMentionedTargetBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMentionedTargetIsMutable();
        mentionedTarget_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:MessageContent)
    }

    static {
      defaultInstance = new MessageContent(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:MessageContent)
  }

  public interface AddGroupMemberRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string group_id = 1;
    /**
     * <code>required string group_id = 1;</code>
     */
    boolean hasGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    java.lang.String getGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();

    // repeated .GroupMember added_member = 2;
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> 
        getAddedMemberList();
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupMember getAddedMember(int index);
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    int getAddedMemberCount();
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
        getAddedMemberOrBuilderList();
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder getAddedMemberOrBuilder(
        int index);

    // repeated int32 to_line = 3;
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    java.util.List<java.lang.Integer> getToLineList();
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    int getToLineCount();
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    int getToLine(int index);

    // optional .MessageContent notify_content = 4;
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    boolean hasNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder();
  }
  /**
   * Protobuf type {@code AddGroupMemberRequest}
   */
  public static final class AddGroupMemberRequest extends
      com.google.protobuf.GeneratedMessage
      implements AddGroupMemberRequestOrBuilder {
    // Use AddGroupMemberRequest.newBuilder() to construct.
    private AddGroupMemberRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private AddGroupMemberRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final AddGroupMemberRequest defaultInstance;
    public static AddGroupMemberRequest getDefaultInstance() {
      return defaultInstance;
    }

    public AddGroupMemberRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private AddGroupMemberRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              groupId_ = input.readBytes();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                addedMember_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.GroupMember>();
                mutable_bitField0_ |= 0x00000002;
              }
              addedMember_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.GroupMember.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              toLine_.add(input.readInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                toLine_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 34: {
              cn.wildfirechat.proto.WFCMessage.MessageContent.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = notifyContent_.toBuilder();
              }
              notifyContent_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.MessageContent.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(notifyContent_);
                notifyContent_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          addedMember_ = java.util.Collections.unmodifiableList(addedMember_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_AddGroupMemberRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_AddGroupMemberRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest.class, cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<AddGroupMemberRequest> PARSER =
        new com.google.protobuf.AbstractParser<AddGroupMemberRequest>() {
      public AddGroupMemberRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AddGroupMemberRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string group_id = 1;
    public static final int GROUP_ID_FIELD_NUMBER = 1;
    private java.lang.Object groupId_;
    /**
     * <code>required string group_id = 1;</code>
     */
    public boolean hasGroupId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public java.lang.String getGroupId() {
      java.lang.Object ref = groupId_;
      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();
        if (bs.isValidUtf8()) {
          groupId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated .GroupMember added_member = 2;
    public static final int ADDED_MEMBER_FIELD_NUMBER = 2;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> addedMember_;
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> getAddedMemberList() {
      return addedMember_;
    }
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
        getAddedMemberOrBuilderList() {
      return addedMember_;
    }
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    public int getAddedMemberCount() {
      return addedMember_.size();
    }
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupMember getAddedMember(int index) {
      return addedMember_.get(index);
    }
    /**
     * <code>repeated .GroupMember added_member = 2;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder getAddedMemberOrBuilder(
        int index) {
      return addedMember_.get(index);
    }

    // repeated int32 to_line = 3;
    public static final int TO_LINE_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> toLine_;
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public java.util.List<java.lang.Integer>
        getToLineList() {
      return toLine_;
    }
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public int getToLineCount() {
      return toLine_.size();
    }
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public int getToLine(int index) {
      return toLine_.get(index);
    }

    // optional .MessageContent notify_content = 4;
    public static final int NOTIFY_CONTENT_FIELD_NUMBER = 4;
    private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_;
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public boolean hasNotifyContent() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
      return notifyContent_;
    }
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
      return notifyContent_;
    }

    private void initFields() {
      groupId_ = "";
      addedMember_ = java.util.Collections.emptyList();
      toLine_ = java.util.Collections.emptyList();
      notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasGroupId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getAddedMemberCount(); i++) {
        if (!getAddedMember(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasNotifyContent()) {
        if (!getNotifyContent().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getGroupIdBytes());
      }
      for (int i = 0; i < addedMember_.size(); i++) {
        output.writeMessage(2, addedMember_.get(i));
      }
      for (int i = 0; i < toLine_.size(); i++) {
        output.writeInt32(3, toLine_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(4, notifyContent_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getGroupIdBytes());
      }
      for (int i = 0; i < addedMember_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, addedMember_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < toLine_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(toLine_.get(i));
        }
        size += dataSize;
        size += 1 * getToLineList().size();
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, notifyContent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code AddGroupMemberRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_AddGroupMemberRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_AddGroupMemberRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest.class, cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getAddedMemberFieldBuilder();
          getNotifyContentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        groupId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (addedMemberBuilder_ == null) {
          addedMember_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          addedMemberBuilder_.clear();
        }
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_AddGroupMemberRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest build() {
        cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest result = new cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.groupId_ = groupId_;
        if (addedMemberBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            addedMember_ = java.util.Collections.unmodifiableList(addedMember_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.addedMember_ = addedMember_;
        } else {
          result.addedMember_ = addedMemberBuilder_.build();
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.toLine_ = toLine_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000002;
        }
        if (notifyContentBuilder_ == null) {
          result.notifyContent_ = notifyContent_;
        } else {
          result.notifyContent_ = notifyContentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest.getDefaultInstance()) return this;
        if (other.hasGroupId()) {
          bitField0_ |= 0x00000001;
          groupId_ = other.groupId_;
          onChanged();
        }
        if (addedMemberBuilder_ == null) {
          if (!other.addedMember_.isEmpty()) {
            if (addedMember_.isEmpty()) {
              addedMember_ = other.addedMember_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureAddedMemberIsMutable();
              addedMember_.addAll(other.addedMember_);
            }
            onChanged();
          }
        } else {
          if (!other.addedMember_.isEmpty()) {
            if (addedMemberBuilder_.isEmpty()) {
              addedMemberBuilder_.dispose();
              addedMemberBuilder_ = null;
              addedMember_ = other.addedMember_;
              bitField0_ = (bitField0_ & ~0x00000002);
              addedMemberBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAddedMemberFieldBuilder() : null;
            } else {
              addedMemberBuilder_.addAllMessages(other.addedMember_);
            }
          }
        }
        if (!other.toLine_.isEmpty()) {
          if (toLine_.isEmpty()) {
            toLine_ = other.toLine_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureToLineIsMutable();
            toLine_.addAll(other.toLine_);
          }
          onChanged();
        }
        if (other.hasNotifyContent()) {
          mergeNotifyContent(other.getNotifyContent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasGroupId()) {
          
          return false;
        }
        for (int i = 0; i < getAddedMemberCount(); i++) {
          if (!getAddedMember(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasNotifyContent()) {
          if (!getNotifyContent().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.AddGroupMemberRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string group_id = 1;
      private java.lang.Object groupId_ = "";
      /**
       * <code>required string group_id = 1;</code>
       */
      public boolean hasGroupId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder clearGroupId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        groupId_ = getDefaultInstance().getGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }

      // repeated .GroupMember added_member = 2;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> addedMember_ =
        java.util.Collections.emptyList();
      private void ensureAddedMemberIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          addedMember_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.GroupMember>(addedMember_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupMember, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder, cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> addedMemberBuilder_;

      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> getAddedMemberList() {
        if (addedMemberBuilder_ == null) {
          return java.util.Collections.unmodifiableList(addedMember_);
        } else {
          return addedMemberBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public int getAddedMemberCount() {
        if (addedMemberBuilder_ == null) {
          return addedMember_.size();
        } else {
          return addedMemberBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember getAddedMember(int index) {
        if (addedMemberBuilder_ == null) {
          return addedMember_.get(index);
        } else {
          return addedMemberBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public Builder setAddedMember(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember value) {
        if (addedMemberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddedMemberIsMutable();
          addedMember_.set(index, value);
          onChanged();
        } else {
          addedMemberBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public Builder setAddedMember(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder builderForValue) {
        if (addedMemberBuilder_ == null) {
          ensureAddedMemberIsMutable();
          addedMember_.set(index, builderForValue.build());
          onChanged();
        } else {
          addedMemberBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public Builder addAddedMember(cn.wildfirechat.proto.WFCMessage.GroupMember value) {
        if (addedMemberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddedMemberIsMutable();
          addedMember_.add(value);
          onChanged();
        } else {
          addedMemberBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public Builder addAddedMember(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember value) {
        if (addedMemberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddedMemberIsMutable();
          addedMember_.add(index, value);
          onChanged();
        } else {
          addedMemberBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public Builder addAddedMember(
          cn.wildfirechat.proto.WFCMessage.GroupMember.Builder builderForValue) {
        if (addedMemberBuilder_ == null) {
          ensureAddedMemberIsMutable();
          addedMember_.add(builderForValue.build());
          onChanged();
        } else {
          addedMemberBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public Builder addAddedMember(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder builderForValue) {
        if (addedMemberBuilder_ == null) {
          ensureAddedMemberIsMutable();
          addedMember_.add(index, builderForValue.build());
          onChanged();
        } else {
          addedMemberBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public Builder addAllAddedMember(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.GroupMember> values) {
        if (addedMemberBuilder_ == null) {
          ensureAddedMemberIsMutable();
          super.addAll(values, addedMember_);
          onChanged();
        } else {
          addedMemberBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public Builder clearAddedMember() {
        if (addedMemberBuilder_ == null) {
          addedMember_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          addedMemberBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public Builder removeAddedMember(int index) {
        if (addedMemberBuilder_ == null) {
          ensureAddedMemberIsMutable();
          addedMember_.remove(index);
          onChanged();
        } else {
          addedMemberBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember.Builder getAddedMemberBuilder(
          int index) {
        return getAddedMemberFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder getAddedMemberOrBuilder(
          int index) {
        if (addedMemberBuilder_ == null) {
          return addedMember_.get(index);  } else {
          return addedMemberBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
           getAddedMemberOrBuilderList() {
        if (addedMemberBuilder_ != null) {
          return addedMemberBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(addedMember_);
        }
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember.Builder addAddedMemberBuilder() {
        return getAddedMemberFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.GroupMember.getDefaultInstance());
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember.Builder addAddedMemberBuilder(
          int index) {
        return getAddedMemberFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.GroupMember.getDefaultInstance());
      }
      /**
       * <code>repeated .GroupMember added_member = 2;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember.Builder> 
           getAddedMemberBuilderList() {
        return getAddedMemberFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupMember, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder, cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
          getAddedMemberFieldBuilder() {
        if (addedMemberBuilder_ == null) {
          addedMemberBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.GroupMember, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder, cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder>(
                  addedMember_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          addedMember_ = null;
        }
        return addedMemberBuilder_;
      }

      // repeated int32 to_line = 3;
      private java.util.List<java.lang.Integer> toLine_ = java.util.Collections.emptyList();
      private void ensureToLineIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = new java.util.ArrayList<java.lang.Integer>(toLine_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public java.util.List<java.lang.Integer>
          getToLineList() {
        return java.util.Collections.unmodifiableList(toLine_);
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public int getToLineCount() {
        return toLine_.size();
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public int getToLine(int index) {
        return toLine_.get(index);
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder setToLine(
          int index, int value) {
        ensureToLineIsMutable();
        toLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder addToLine(int value) {
        ensureToLineIsMutable();
        toLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder addAllToLine(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureToLineIsMutable();
        super.addAll(values, toLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder clearToLine() {
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      // optional .MessageContent notify_content = 4;
      private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> notifyContentBuilder_;
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public boolean hasNotifyContent() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
        if (notifyContentBuilder_ == null) {
          return notifyContent_;
        } else {
          return notifyContentBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder setNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          notifyContent_ = value;
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder setNotifyContent(
          cn.wildfirechat.proto.WFCMessage.MessageContent.Builder builderForValue) {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = builderForValue.build();
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder mergeNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              notifyContent_ != cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) {
            notifyContent_ =
              cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder(notifyContent_).mergeFrom(value).buildPartial();
          } else {
            notifyContent_ = value;
          }
          onChanged();
        } else {
          notifyContentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder clearNotifyContent() {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
          onChanged();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent.Builder getNotifyContentBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getNotifyContentFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
        if (notifyContentBuilder_ != null) {
          return notifyContentBuilder_.getMessageOrBuilder();
        } else {
          return notifyContent_;
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> 
          getNotifyContentFieldBuilder() {
        if (notifyContentBuilder_ == null) {
          notifyContentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder>(
                  notifyContent_,
                  getParentForChildren(),
                  isClean());
          notifyContent_ = null;
        }
        return notifyContentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:AddGroupMemberRequest)
    }

    static {
      defaultInstance = new AddGroupMemberRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:AddGroupMemberRequest)
  }

  public interface CreateGroupRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .Group group = 1;
    /**
     * <code>required .Group group = 1;</code>
     */
    boolean hasGroup();
    /**
     * <code>required .Group group = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.Group getGroup();
    /**
     * <code>required .Group group = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupOrBuilder getGroupOrBuilder();

    // repeated int32 to_line = 2;
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    java.util.List<java.lang.Integer> getToLineList();
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    int getToLineCount();
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    int getToLine(int index);

    // optional .MessageContent notify_content = 3;
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    boolean hasNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder();
  }
  /**
   * Protobuf type {@code CreateGroupRequest}
   */
  public static final class CreateGroupRequest extends
      com.google.protobuf.GeneratedMessage
      implements CreateGroupRequestOrBuilder {
    // Use CreateGroupRequest.newBuilder() to construct.
    private CreateGroupRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CreateGroupRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final CreateGroupRequest defaultInstance;
    public static CreateGroupRequest getDefaultInstance() {
      return defaultInstance;
    }

    public CreateGroupRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CreateGroupRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              cn.wildfirechat.proto.WFCMessage.Group.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = group_.toBuilder();
              }
              group_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.Group.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(group_);
                group_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              toLine_.add(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                toLine_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 26: {
              cn.wildfirechat.proto.WFCMessage.MessageContent.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = notifyContent_.toBuilder();
              }
              notifyContent_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.MessageContent.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(notifyContent_);
                notifyContent_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_CreateGroupRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_CreateGroupRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.CreateGroupRequest.class, cn.wildfirechat.proto.WFCMessage.CreateGroupRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<CreateGroupRequest> PARSER =
        new com.google.protobuf.AbstractParser<CreateGroupRequest>() {
      public CreateGroupRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CreateGroupRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required .Group group = 1;
    public static final int GROUP_FIELD_NUMBER = 1;
    private cn.wildfirechat.proto.WFCMessage.Group group_;
    /**
     * <code>required .Group group = 1;</code>
     */
    public boolean hasGroup() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .Group group = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.Group getGroup() {
      return group_;
    }
    /**
     * <code>required .Group group = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupOrBuilder getGroupOrBuilder() {
      return group_;
    }

    // repeated int32 to_line = 2;
    public static final int TO_LINE_FIELD_NUMBER = 2;
    private java.util.List<java.lang.Integer> toLine_;
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    public java.util.List<java.lang.Integer>
        getToLineList() {
      return toLine_;
    }
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    public int getToLineCount() {
      return toLine_.size();
    }
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    public int getToLine(int index) {
      return toLine_.get(index);
    }

    // optional .MessageContent notify_content = 3;
    public static final int NOTIFY_CONTENT_FIELD_NUMBER = 3;
    private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_;
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    public boolean hasNotifyContent() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
      return notifyContent_;
    }
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
      return notifyContent_;
    }

    private void initFields() {
      group_ = cn.wildfirechat.proto.WFCMessage.Group.getDefaultInstance();
      toLine_ = java.util.Collections.emptyList();
      notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasGroup()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getGroup().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasNotifyContent()) {
        if (!getNotifyContent().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, group_);
      }
      for (int i = 0; i < toLine_.size(); i++) {
        output.writeInt32(2, toLine_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, notifyContent_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, group_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < toLine_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(toLine_.get(i));
        }
        size += dataSize;
        size += 1 * getToLineList().size();
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, notifyContent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.CreateGroupRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code CreateGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.CreateGroupRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_CreateGroupRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_CreateGroupRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.CreateGroupRequest.class, cn.wildfirechat.proto.WFCMessage.CreateGroupRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.CreateGroupRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getGroupFieldBuilder();
          getNotifyContentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (groupBuilder_ == null) {
          group_ = cn.wildfirechat.proto.WFCMessage.Group.getDefaultInstance();
        } else {
          groupBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_CreateGroupRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.CreateGroupRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.CreateGroupRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.CreateGroupRequest build() {
        cn.wildfirechat.proto.WFCMessage.CreateGroupRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.CreateGroupRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.CreateGroupRequest result = new cn.wildfirechat.proto.WFCMessage.CreateGroupRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (groupBuilder_ == null) {
          result.group_ = group_;
        } else {
          result.group_ = groupBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.toLine_ = toLine_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        if (notifyContentBuilder_ == null) {
          result.notifyContent_ = notifyContent_;
        } else {
          result.notifyContent_ = notifyContentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.CreateGroupRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.CreateGroupRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.CreateGroupRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.CreateGroupRequest.getDefaultInstance()) return this;
        if (other.hasGroup()) {
          mergeGroup(other.getGroup());
        }
        if (!other.toLine_.isEmpty()) {
          if (toLine_.isEmpty()) {
            toLine_ = other.toLine_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureToLineIsMutable();
            toLine_.addAll(other.toLine_);
          }
          onChanged();
        }
        if (other.hasNotifyContent()) {
          mergeNotifyContent(other.getNotifyContent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasGroup()) {
          
          return false;
        }
        if (!getGroup().isInitialized()) {
          
          return false;
        }
        if (hasNotifyContent()) {
          if (!getNotifyContent().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.CreateGroupRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.CreateGroupRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .Group group = 1;
      private cn.wildfirechat.proto.WFCMessage.Group group_ = cn.wildfirechat.proto.WFCMessage.Group.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Group, cn.wildfirechat.proto.WFCMessage.Group.Builder, cn.wildfirechat.proto.WFCMessage.GroupOrBuilder> groupBuilder_;
      /**
       * <code>required .Group group = 1;</code>
       */
      public boolean hasGroup() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .Group group = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Group getGroup() {
        if (groupBuilder_ == null) {
          return group_;
        } else {
          return groupBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Group group = 1;</code>
       */
      public Builder setGroup(cn.wildfirechat.proto.WFCMessage.Group value) {
        if (groupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          group_ = value;
          onChanged();
        } else {
          groupBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Group group = 1;</code>
       */
      public Builder setGroup(
          cn.wildfirechat.proto.WFCMessage.Group.Builder builderForValue) {
        if (groupBuilder_ == null) {
          group_ = builderForValue.build();
          onChanged();
        } else {
          groupBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Group group = 1;</code>
       */
      public Builder mergeGroup(cn.wildfirechat.proto.WFCMessage.Group value) {
        if (groupBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              group_ != cn.wildfirechat.proto.WFCMessage.Group.getDefaultInstance()) {
            group_ =
              cn.wildfirechat.proto.WFCMessage.Group.newBuilder(group_).mergeFrom(value).buildPartial();
          } else {
            group_ = value;
          }
          onChanged();
        } else {
          groupBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Group group = 1;</code>
       */
      public Builder clearGroup() {
        if (groupBuilder_ == null) {
          group_ = cn.wildfirechat.proto.WFCMessage.Group.getDefaultInstance();
          onChanged();
        } else {
          groupBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .Group group = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Group.Builder getGroupBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getGroupFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Group group = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupOrBuilder getGroupOrBuilder() {
        if (groupBuilder_ != null) {
          return groupBuilder_.getMessageOrBuilder();
        } else {
          return group_;
        }
      }
      /**
       * <code>required .Group group = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Group, cn.wildfirechat.proto.WFCMessage.Group.Builder, cn.wildfirechat.proto.WFCMessage.GroupOrBuilder> 
          getGroupFieldBuilder() {
        if (groupBuilder_ == null) {
          groupBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.Group, cn.wildfirechat.proto.WFCMessage.Group.Builder, cn.wildfirechat.proto.WFCMessage.GroupOrBuilder>(
                  group_,
                  getParentForChildren(),
                  isClean());
          group_ = null;
        }
        return groupBuilder_;
      }

      // repeated int32 to_line = 2;
      private java.util.List<java.lang.Integer> toLine_ = java.util.Collections.emptyList();
      private void ensureToLineIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          toLine_ = new java.util.ArrayList<java.lang.Integer>(toLine_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public java.util.List<java.lang.Integer>
          getToLineList() {
        return java.util.Collections.unmodifiableList(toLine_);
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public int getToLineCount() {
        return toLine_.size();
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public int getToLine(int index) {
        return toLine_.get(index);
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder setToLine(
          int index, int value) {
        ensureToLineIsMutable();
        toLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder addToLine(int value) {
        ensureToLineIsMutable();
        toLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder addAllToLine(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureToLineIsMutable();
        super.addAll(values, toLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder clearToLine() {
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      // optional .MessageContent notify_content = 3;
      private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> notifyContentBuilder_;
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public boolean hasNotifyContent() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
        if (notifyContentBuilder_ == null) {
          return notifyContent_;
        } else {
          return notifyContentBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder setNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          notifyContent_ = value;
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder setNotifyContent(
          cn.wildfirechat.proto.WFCMessage.MessageContent.Builder builderForValue) {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = builderForValue.build();
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder mergeNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              notifyContent_ != cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) {
            notifyContent_ =
              cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder(notifyContent_).mergeFrom(value).buildPartial();
          } else {
            notifyContent_ = value;
          }
          onChanged();
        } else {
          notifyContentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder clearNotifyContent() {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
          onChanged();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent.Builder getNotifyContentBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getNotifyContentFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
        if (notifyContentBuilder_ != null) {
          return notifyContentBuilder_.getMessageOrBuilder();
        } else {
          return notifyContent_;
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> 
          getNotifyContentFieldBuilder() {
        if (notifyContentBuilder_ == null) {
          notifyContentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder>(
                  notifyContent_,
                  getParentForChildren(),
                  isClean());
          notifyContent_ = null;
        }
        return notifyContentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:CreateGroupRequest)
    }

    static {
      defaultInstance = new CreateGroupRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:CreateGroupRequest)
  }

  public interface DismissGroupRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string group_id = 1;
    /**
     * <code>required string group_id = 1;</code>
     */
    boolean hasGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    java.lang.String getGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();

    // repeated int32 to_line = 2;
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    java.util.List<java.lang.Integer> getToLineList();
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    int getToLineCount();
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    int getToLine(int index);

    // optional .MessageContent notify_content = 3;
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    boolean hasNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder();
  }
  /**
   * Protobuf type {@code DismissGroupRequest}
   */
  public static final class DismissGroupRequest extends
      com.google.protobuf.GeneratedMessage
      implements DismissGroupRequestOrBuilder {
    // Use DismissGroupRequest.newBuilder() to construct.
    private DismissGroupRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private DismissGroupRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final DismissGroupRequest defaultInstance;
    public static DismissGroupRequest getDefaultInstance() {
      return defaultInstance;
    }

    public DismissGroupRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private DismissGroupRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              groupId_ = input.readBytes();
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              toLine_.add(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                toLine_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 26: {
              cn.wildfirechat.proto.WFCMessage.MessageContent.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = notifyContent_.toBuilder();
              }
              notifyContent_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.MessageContent.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(notifyContent_);
                notifyContent_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_DismissGroupRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_DismissGroupRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.DismissGroupRequest.class, cn.wildfirechat.proto.WFCMessage.DismissGroupRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<DismissGroupRequest> PARSER =
        new com.google.protobuf.AbstractParser<DismissGroupRequest>() {
      public DismissGroupRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DismissGroupRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string group_id = 1;
    public static final int GROUP_ID_FIELD_NUMBER = 1;
    private java.lang.Object groupId_;
    /**
     * <code>required string group_id = 1;</code>
     */
    public boolean hasGroupId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public java.lang.String getGroupId() {
      java.lang.Object ref = groupId_;
      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();
        if (bs.isValidUtf8()) {
          groupId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated int32 to_line = 2;
    public static final int TO_LINE_FIELD_NUMBER = 2;
    private java.util.List<java.lang.Integer> toLine_;
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    public java.util.List<java.lang.Integer>
        getToLineList() {
      return toLine_;
    }
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    public int getToLineCount() {
      return toLine_.size();
    }
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    public int getToLine(int index) {
      return toLine_.get(index);
    }

    // optional .MessageContent notify_content = 3;
    public static final int NOTIFY_CONTENT_FIELD_NUMBER = 3;
    private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_;
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    public boolean hasNotifyContent() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
      return notifyContent_;
    }
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
      return notifyContent_;
    }

    private void initFields() {
      groupId_ = "";
      toLine_ = java.util.Collections.emptyList();
      notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasGroupId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasNotifyContent()) {
        if (!getNotifyContent().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getGroupIdBytes());
      }
      for (int i = 0; i < toLine_.size(); i++) {
        output.writeInt32(2, toLine_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, notifyContent_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getGroupIdBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < toLine_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(toLine_.get(i));
        }
        size += dataSize;
        size += 1 * getToLineList().size();
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, notifyContent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.DismissGroupRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DismissGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.DismissGroupRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_DismissGroupRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_DismissGroupRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.DismissGroupRequest.class, cn.wildfirechat.proto.WFCMessage.DismissGroupRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.DismissGroupRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getNotifyContentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        groupId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_DismissGroupRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.DismissGroupRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.DismissGroupRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.DismissGroupRequest build() {
        cn.wildfirechat.proto.WFCMessage.DismissGroupRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.DismissGroupRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.DismissGroupRequest result = new cn.wildfirechat.proto.WFCMessage.DismissGroupRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.groupId_ = groupId_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.toLine_ = toLine_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        if (notifyContentBuilder_ == null) {
          result.notifyContent_ = notifyContent_;
        } else {
          result.notifyContent_ = notifyContentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.DismissGroupRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.DismissGroupRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.DismissGroupRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.DismissGroupRequest.getDefaultInstance()) return this;
        if (other.hasGroupId()) {
          bitField0_ |= 0x00000001;
          groupId_ = other.groupId_;
          onChanged();
        }
        if (!other.toLine_.isEmpty()) {
          if (toLine_.isEmpty()) {
            toLine_ = other.toLine_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureToLineIsMutable();
            toLine_.addAll(other.toLine_);
          }
          onChanged();
        }
        if (other.hasNotifyContent()) {
          mergeNotifyContent(other.getNotifyContent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasGroupId()) {
          
          return false;
        }
        if (hasNotifyContent()) {
          if (!getNotifyContent().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.DismissGroupRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.DismissGroupRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string group_id = 1;
      private java.lang.Object groupId_ = "";
      /**
       * <code>required string group_id = 1;</code>
       */
      public boolean hasGroupId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder clearGroupId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        groupId_ = getDefaultInstance().getGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }

      // repeated int32 to_line = 2;
      private java.util.List<java.lang.Integer> toLine_ = java.util.Collections.emptyList();
      private void ensureToLineIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          toLine_ = new java.util.ArrayList<java.lang.Integer>(toLine_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public java.util.List<java.lang.Integer>
          getToLineList() {
        return java.util.Collections.unmodifiableList(toLine_);
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public int getToLineCount() {
        return toLine_.size();
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public int getToLine(int index) {
        return toLine_.get(index);
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder setToLine(
          int index, int value) {
        ensureToLineIsMutable();
        toLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder addToLine(int value) {
        ensureToLineIsMutable();
        toLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder addAllToLine(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureToLineIsMutable();
        super.addAll(values, toLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder clearToLine() {
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      // optional .MessageContent notify_content = 3;
      private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> notifyContentBuilder_;
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public boolean hasNotifyContent() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
        if (notifyContentBuilder_ == null) {
          return notifyContent_;
        } else {
          return notifyContentBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder setNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          notifyContent_ = value;
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder setNotifyContent(
          cn.wildfirechat.proto.WFCMessage.MessageContent.Builder builderForValue) {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = builderForValue.build();
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder mergeNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              notifyContent_ != cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) {
            notifyContent_ =
              cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder(notifyContent_).mergeFrom(value).buildPartial();
          } else {
            notifyContent_ = value;
          }
          onChanged();
        } else {
          notifyContentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder clearNotifyContent() {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
          onChanged();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent.Builder getNotifyContentBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getNotifyContentFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
        if (notifyContentBuilder_ != null) {
          return notifyContentBuilder_.getMessageOrBuilder();
        } else {
          return notifyContent_;
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> 
          getNotifyContentFieldBuilder() {
        if (notifyContentBuilder_ == null) {
          notifyContentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder>(
                  notifyContent_,
                  getParentForChildren(),
                  isClean());
          notifyContent_ = null;
        }
        return notifyContentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:DismissGroupRequest)
    }

    static {
      defaultInstance = new DismissGroupRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:DismissGroupRequest)
  }

  public interface FriendRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string from_uid = 1;
    /**
     * <code>optional string from_uid = 1;</code>
     */
    boolean hasFromUid();
    /**
     * <code>optional string from_uid = 1;</code>
     */
    java.lang.String getFromUid();
    /**
     * <code>optional string from_uid = 1;</code>
     */
    com.google.protobuf.ByteString
        getFromUidBytes();

    // required string to_uid = 2;
    /**
     * <code>required string to_uid = 2;</code>
     */
    boolean hasToUid();
    /**
     * <code>required string to_uid = 2;</code>
     */
    java.lang.String getToUid();
    /**
     * <code>required string to_uid = 2;</code>
     */
    com.google.protobuf.ByteString
        getToUidBytes();

    // required string reason = 3;
    /**
     * <code>required string reason = 3;</code>
     */
    boolean hasReason();
    /**
     * <code>required string reason = 3;</code>
     */
    java.lang.String getReason();
    /**
     * <code>required string reason = 3;</code>
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    // optional int32 status = 4;
    /**
     * <code>optional int32 status = 4;</code>
     */
    boolean hasStatus();
    /**
     * <code>optional int32 status = 4;</code>
     */
    int getStatus();

    // optional int64 update_dt = 5;
    /**
     * <code>optional int64 update_dt = 5;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>optional int64 update_dt = 5;</code>
     */
    long getUpdateDt();

    // optional bool from_read_status = 6;
    /**
     * <code>optional bool from_read_status = 6;</code>
     */
    boolean hasFromReadStatus();
    /**
     * <code>optional bool from_read_status = 6;</code>
     */
    boolean getFromReadStatus();

    // optional bool to_read_status = 7;
    /**
     * <code>optional bool to_read_status = 7;</code>
     */
    boolean hasToReadStatus();
    /**
     * <code>optional bool to_read_status = 7;</code>
     */
    boolean getToReadStatus();
  }
  /**
   * Protobuf type {@code FriendRequest}
   */
  public static final class FriendRequest extends
      com.google.protobuf.GeneratedMessage
      implements FriendRequestOrBuilder {
    // Use FriendRequest.newBuilder() to construct.
    private FriendRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FriendRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FriendRequest defaultInstance;
    public static FriendRequest getDefaultInstance() {
      return defaultInstance;
    }

    public FriendRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FriendRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              fromUid_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              toUid_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              reason_ = input.readBytes();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              status_ = input.readInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              updateDt_ = input.readInt64();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              fromReadStatus_ = input.readBool();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              toReadStatus_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_FriendRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_FriendRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.FriendRequest.class, cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<FriendRequest> PARSER =
        new com.google.protobuf.AbstractParser<FriendRequest>() {
      public FriendRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FriendRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // optional string from_uid = 1;
    public static final int FROM_UID_FIELD_NUMBER = 1;
    private java.lang.Object fromUid_;
    /**
     * <code>optional string from_uid = 1;</code>
     */
    public boolean hasFromUid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string from_uid = 1;</code>
     */
    public java.lang.String getFromUid() {
      java.lang.Object ref = fromUid_;
      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();
        if (bs.isValidUtf8()) {
          fromUid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string from_uid = 1;</code>
     */
    public com.google.protobuf.ByteString
        getFromUidBytes() {
      java.lang.Object ref = fromUid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fromUid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string to_uid = 2;
    public static final int TO_UID_FIELD_NUMBER = 2;
    private java.lang.Object toUid_;
    /**
     * <code>required string to_uid = 2;</code>
     */
    public boolean hasToUid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string to_uid = 2;</code>
     */
    public java.lang.String getToUid() {
      java.lang.Object ref = toUid_;
      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();
        if (bs.isValidUtf8()) {
          toUid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string to_uid = 2;</code>
     */
    public com.google.protobuf.ByteString
        getToUidBytes() {
      java.lang.Object ref = toUid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toUid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string reason = 3;
    public static final int REASON_FIELD_NUMBER = 3;
    private java.lang.Object reason_;
    /**
     * <code>required string reason = 3;</code>
     */
    public boolean hasReason() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string reason = 3;</code>
     */
    public java.lang.String getReason() {
      java.lang.Object ref = reason_;
      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();
        if (bs.isValidUtf8()) {
          reason_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string reason = 3;</code>
     */
    public com.google.protobuf.ByteString
        getReasonBytes() {
      java.lang.Object ref = reason_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        reason_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 status = 4;
    public static final int STATUS_FIELD_NUMBER = 4;
    private int status_;
    /**
     * <code>optional int32 status = 4;</code>
     */
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 status = 4;</code>
     */
    public int getStatus() {
      return status_;
    }

    // optional int64 update_dt = 5;
    public static final int UPDATE_DT_FIELD_NUMBER = 5;
    private long updateDt_;
    /**
     * <code>optional int64 update_dt = 5;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int64 update_dt = 5;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    // optional bool from_read_status = 6;
    public static final int FROM_READ_STATUS_FIELD_NUMBER = 6;
    private boolean fromReadStatus_;
    /**
     * <code>optional bool from_read_status = 6;</code>
     */
    public boolean hasFromReadStatus() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional bool from_read_status = 6;</code>
     */
    public boolean getFromReadStatus() {
      return fromReadStatus_;
    }

    // optional bool to_read_status = 7;
    public static final int TO_READ_STATUS_FIELD_NUMBER = 7;
    private boolean toReadStatus_;
    /**
     * <code>optional bool to_read_status = 7;</code>
     */
    public boolean hasToReadStatus() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional bool to_read_status = 7;</code>
     */
    public boolean getToReadStatus() {
      return toReadStatus_;
    }

    private void initFields() {
      fromUid_ = "";
      toUid_ = "";
      reason_ = "";
      status_ = 0;
      updateDt_ = 0L;
      fromReadStatus_ = false;
      toReadStatus_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasToUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReason()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getFromUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getToUidBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getReasonBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, status_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt64(5, updateDt_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(6, fromReadStatus_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, toReadStatus_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getFromUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getToUidBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getReasonBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, status_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, updateDt_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, fromReadStatus_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, toReadStatus_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.FriendRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.FriendRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FriendRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_FriendRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_FriendRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.FriendRequest.class, cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.FriendRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        fromUid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        toUid_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        reason_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        fromReadStatus_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        toReadStatus_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_FriendRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.FriendRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.FriendRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.FriendRequest build() {
        cn.wildfirechat.proto.WFCMessage.FriendRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.FriendRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.FriendRequest result = new cn.wildfirechat.proto.WFCMessage.FriendRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fromUid_ = fromUid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.toUid_ = toUid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.reason_ = reason_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.status_ = status_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.updateDt_ = updateDt_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.fromReadStatus_ = fromReadStatus_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.toReadStatus_ = toReadStatus_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.FriendRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.FriendRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.FriendRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.FriendRequest.getDefaultInstance()) return this;
        if (other.hasFromUid()) {
          bitField0_ |= 0x00000001;
          fromUid_ = other.fromUid_;
          onChanged();
        }
        if (other.hasToUid()) {
          bitField0_ |= 0x00000002;
          toUid_ = other.toUid_;
          onChanged();
        }
        if (other.hasReason()) {
          bitField0_ |= 0x00000004;
          reason_ = other.reason_;
          onChanged();
        }
        if (other.hasStatus()) {
          setStatus(other.getStatus());
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        if (other.hasFromReadStatus()) {
          setFromReadStatus(other.getFromReadStatus());
        }
        if (other.hasToReadStatus()) {
          setToReadStatus(other.getToReadStatus());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasToUid()) {
          
          return false;
        }
        if (!hasReason()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.FriendRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.FriendRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string from_uid = 1;
      private java.lang.Object fromUid_ = "";
      /**
       * <code>optional string from_uid = 1;</code>
       */
      public boolean hasFromUid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string from_uid = 1;</code>
       */
      public java.lang.String getFromUid() {
        java.lang.Object ref = fromUid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          fromUid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string from_uid = 1;</code>
       */
      public com.google.protobuf.ByteString
          getFromUidBytes() {
        java.lang.Object ref = fromUid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fromUid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string from_uid = 1;</code>
       */
      public Builder setFromUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        fromUid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string from_uid = 1;</code>
       */
      public Builder clearFromUid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fromUid_ = getDefaultInstance().getFromUid();
        onChanged();
        return this;
      }
      /**
       * <code>optional string from_uid = 1;</code>
       */
      public Builder setFromUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        fromUid_ = value;
        onChanged();
        return this;
      }

      // required string to_uid = 2;
      private java.lang.Object toUid_ = "";
      /**
       * <code>required string to_uid = 2;</code>
       */
      public boolean hasToUid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string to_uid = 2;</code>
       */
      public java.lang.String getToUid() {
        java.lang.Object ref = toUid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          toUid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string to_uid = 2;</code>
       */
      public com.google.protobuf.ByteString
          getToUidBytes() {
        java.lang.Object ref = toUid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toUid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string to_uid = 2;</code>
       */
      public Builder setToUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        toUid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string to_uid = 2;</code>
       */
      public Builder clearToUid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        toUid_ = getDefaultInstance().getToUid();
        onChanged();
        return this;
      }
      /**
       * <code>required string to_uid = 2;</code>
       */
      public Builder setToUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        toUid_ = value;
        onChanged();
        return this;
      }

      // required string reason = 3;
      private java.lang.Object reason_ = "";
      /**
       * <code>required string reason = 3;</code>
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string reason = 3;</code>
       */
      public java.lang.String getReason() {
        java.lang.Object ref = reason_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          reason_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string reason = 3;</code>
       */
      public com.google.protobuf.ByteString
          getReasonBytes() {
        java.lang.Object ref = reason_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reason_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string reason = 3;</code>
       */
      public Builder setReason(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        reason_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string reason = 3;</code>
       */
      public Builder clearReason() {
        bitField0_ = (bitField0_ & ~0x00000004);
        reason_ = getDefaultInstance().getReason();
        onChanged();
        return this;
      }
      /**
       * <code>required string reason = 3;</code>
       */
      public Builder setReasonBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        reason_ = value;
        onChanged();
        return this;
      }

      // optional int32 status = 4;
      private int status_ ;
      /**
       * <code>optional int32 status = 4;</code>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 status = 4;</code>
       */
      public int getStatus() {
        return status_;
      }
      /**
       * <code>optional int32 status = 4;</code>
       */
      public Builder setStatus(int value) {
        bitField0_ |= 0x00000008;
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 status = 4;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000008);
        status_ = 0;
        onChanged();
        return this;
      }

      // optional int64 update_dt = 5;
      private long updateDt_ ;
      /**
       * <code>optional int64 update_dt = 5;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int64 update_dt = 5;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>optional int64 update_dt = 5;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000010;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 update_dt = 5;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000010);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // optional bool from_read_status = 6;
      private boolean fromReadStatus_ ;
      /**
       * <code>optional bool from_read_status = 6;</code>
       */
      public boolean hasFromReadStatus() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional bool from_read_status = 6;</code>
       */
      public boolean getFromReadStatus() {
        return fromReadStatus_;
      }
      /**
       * <code>optional bool from_read_status = 6;</code>
       */
      public Builder setFromReadStatus(boolean value) {
        bitField0_ |= 0x00000020;
        fromReadStatus_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool from_read_status = 6;</code>
       */
      public Builder clearFromReadStatus() {
        bitField0_ = (bitField0_ & ~0x00000020);
        fromReadStatus_ = false;
        onChanged();
        return this;
      }

      // optional bool to_read_status = 7;
      private boolean toReadStatus_ ;
      /**
       * <code>optional bool to_read_status = 7;</code>
       */
      public boolean hasToReadStatus() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional bool to_read_status = 7;</code>
       */
      public boolean getToReadStatus() {
        return toReadStatus_;
      }
      /**
       * <code>optional bool to_read_status = 7;</code>
       */
      public Builder setToReadStatus(boolean value) {
        bitField0_ |= 0x00000040;
        toReadStatus_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool to_read_status = 7;</code>
       */
      public Builder clearToReadStatus() {
        bitField0_ = (bitField0_ & ~0x00000040);
        toReadStatus_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:FriendRequest)
    }

    static {
      defaultInstance = new FriendRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FriendRequest)
  }

  public interface GeneralResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 error_code = 1;
    /**
     * <code>required int32 error_code = 1;</code>
     */
    boolean hasErrorCode();
    /**
     * <code>required int32 error_code = 1;</code>
     */
    int getErrorCode();
  }
  /**
   * Protobuf type {@code GeneralResult}
   */
  public static final class GeneralResult extends
      com.google.protobuf.GeneratedMessage
      implements GeneralResultOrBuilder {
    // Use GeneralResult.newBuilder() to construct.
    private GeneralResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GeneralResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GeneralResult defaultInstance;
    public static GeneralResult getDefaultInstance() {
      return defaultInstance;
    }

    public GeneralResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GeneralResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              errorCode_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GeneralResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GeneralResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GeneralResult.class, cn.wildfirechat.proto.WFCMessage.GeneralResult.Builder.class);
    }

    public static com.google.protobuf.Parser<GeneralResult> PARSER =
        new com.google.protobuf.AbstractParser<GeneralResult>() {
      public GeneralResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GeneralResult(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int32 error_code = 1;
    public static final int ERROR_CODE_FIELD_NUMBER = 1;
    private int errorCode_;
    /**
     * <code>required int32 error_code = 1;</code>
     */
    public boolean hasErrorCode() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 error_code = 1;</code>
     */
    public int getErrorCode() {
      return errorCode_;
    }

    private void initFields() {
      errorCode_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasErrorCode()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, errorCode_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, errorCode_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GeneralResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GeneralResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GeneralResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GeneralResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GeneralResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GeneralResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GeneralResult.class, cn.wildfirechat.proto.WFCMessage.GeneralResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GeneralResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        errorCode_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GeneralResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GeneralResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GeneralResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GeneralResult build() {
        cn.wildfirechat.proto.WFCMessage.GeneralResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GeneralResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GeneralResult result = new cn.wildfirechat.proto.WFCMessage.GeneralResult(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.errorCode_ = errorCode_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GeneralResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GeneralResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GeneralResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GeneralResult.getDefaultInstance()) return this;
        if (other.hasErrorCode()) {
          setErrorCode(other.getErrorCode());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasErrorCode()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GeneralResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GeneralResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 error_code = 1;
      private int errorCode_ ;
      /**
       * <code>required int32 error_code = 1;</code>
       */
      public boolean hasErrorCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 error_code = 1;</code>
       */
      public int getErrorCode() {
        return errorCode_;
      }
      /**
       * <code>required int32 error_code = 1;</code>
       */
      public Builder setErrorCode(int value) {
        bitField0_ |= 0x00000001;
        errorCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 error_code = 1;</code>
       */
      public Builder clearErrorCode() {
        bitField0_ = (bitField0_ & ~0x00000001);
        errorCode_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GeneralResult)
    }

    static {
      defaultInstance = new GeneralResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GeneralResult)
  }

  public interface GetUploadTokenResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string domain = 1;
    /**
     * <code>required string domain = 1;</code>
     */
    boolean hasDomain();
    /**
     * <code>required string domain = 1;</code>
     */
    java.lang.String getDomain();
    /**
     * <code>required string domain = 1;</code>
     */
    com.google.protobuf.ByteString
        getDomainBytes();

    // required string token = 2;
    /**
     * <code>required string token = 2;</code>
     */
    boolean hasToken();
    /**
     * <code>required string token = 2;</code>
     */
    java.lang.String getToken();
    /**
     * <code>required string token = 2;</code>
     */
    com.google.protobuf.ByteString
        getTokenBytes();

    // required string server = 3;
    /**
     * <code>required string server = 3;</code>
     */
    boolean hasServer();
    /**
     * <code>required string server = 3;</code>
     */
    java.lang.String getServer();
    /**
     * <code>required string server = 3;</code>
     */
    com.google.protobuf.ByteString
        getServerBytes();
  }
  /**
   * Protobuf type {@code GetUploadTokenResult}
   */
  public static final class GetUploadTokenResult extends
      com.google.protobuf.GeneratedMessage
      implements GetUploadTokenResultOrBuilder {
    // Use GetUploadTokenResult.newBuilder() to construct.
    private GetUploadTokenResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetUploadTokenResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetUploadTokenResult defaultInstance;
    public static GetUploadTokenResult getDefaultInstance() {
      return defaultInstance;
    }

    public GetUploadTokenResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetUploadTokenResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              domain_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              token_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              server_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetUploadTokenResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetUploadTokenResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult.class, cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult.Builder.class);
    }

    public static com.google.protobuf.Parser<GetUploadTokenResult> PARSER =
        new com.google.protobuf.AbstractParser<GetUploadTokenResult>() {
      public GetUploadTokenResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetUploadTokenResult(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string domain = 1;
    public static final int DOMAIN_FIELD_NUMBER = 1;
    private java.lang.Object domain_;
    /**
     * <code>required string domain = 1;</code>
     */
    public boolean hasDomain() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string domain = 1;</code>
     */
    public java.lang.String getDomain() {
      java.lang.Object ref = domain_;
      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();
        if (bs.isValidUtf8()) {
          domain_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string domain = 1;</code>
     */
    public com.google.protobuf.ByteString
        getDomainBytes() {
      java.lang.Object ref = domain_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        domain_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string token = 2;
    public static final int TOKEN_FIELD_NUMBER = 2;
    private java.lang.Object token_;
    /**
     * <code>required string token = 2;</code>
     */
    public boolean hasToken() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string token = 2;</code>
     */
    public java.lang.String getToken() {
      java.lang.Object ref = token_;
      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();
        if (bs.isValidUtf8()) {
          token_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string token = 2;</code>
     */
    public com.google.protobuf.ByteString
        getTokenBytes() {
      java.lang.Object ref = token_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        token_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string server = 3;
    public static final int SERVER_FIELD_NUMBER = 3;
    private java.lang.Object server_;
    /**
     * <code>required string server = 3;</code>
     */
    public boolean hasServer() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string server = 3;</code>
     */
    public java.lang.String getServer() {
      java.lang.Object ref = server_;
      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();
        if (bs.isValidUtf8()) {
          server_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string server = 3;</code>
     */
    public com.google.protobuf.ByteString
        getServerBytes() {
      java.lang.Object ref = server_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        server_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      domain_ = "";
      token_ = "";
      server_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasDomain()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasToken()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasServer()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getDomainBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getTokenBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getServerBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getDomainBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getTokenBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getServerBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetUploadTokenResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GetUploadTokenResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetUploadTokenResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetUploadTokenResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult.class, cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        domain_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        token_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        server_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetUploadTokenResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult build() {
        cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult result = new cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.domain_ = domain_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.token_ = token_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.server_ = server_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult.getDefaultInstance()) return this;
        if (other.hasDomain()) {
          bitField0_ |= 0x00000001;
          domain_ = other.domain_;
          onChanged();
        }
        if (other.hasToken()) {
          bitField0_ |= 0x00000002;
          token_ = other.token_;
          onChanged();
        }
        if (other.hasServer()) {
          bitField0_ |= 0x00000004;
          server_ = other.server_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasDomain()) {
          
          return false;
        }
        if (!hasToken()) {
          
          return false;
        }
        if (!hasServer()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GetUploadTokenResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string domain = 1;
      private java.lang.Object domain_ = "";
      /**
       * <code>required string domain = 1;</code>
       */
      public boolean hasDomain() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string domain = 1;</code>
       */
      public java.lang.String getDomain() {
        java.lang.Object ref = domain_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          domain_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string domain = 1;</code>
       */
      public com.google.protobuf.ByteString
          getDomainBytes() {
        java.lang.Object ref = domain_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          domain_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string domain = 1;</code>
       */
      public Builder setDomain(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        domain_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string domain = 1;</code>
       */
      public Builder clearDomain() {
        bitField0_ = (bitField0_ & ~0x00000001);
        domain_ = getDefaultInstance().getDomain();
        onChanged();
        return this;
      }
      /**
       * <code>required string domain = 1;</code>
       */
      public Builder setDomainBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        domain_ = value;
        onChanged();
        return this;
      }

      // required string token = 2;
      private java.lang.Object token_ = "";
      /**
       * <code>required string token = 2;</code>
       */
      public boolean hasToken() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string token = 2;</code>
       */
      public java.lang.String getToken() {
        java.lang.Object ref = token_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          token_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string token = 2;</code>
       */
      public com.google.protobuf.ByteString
          getTokenBytes() {
        java.lang.Object ref = token_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          token_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string token = 2;</code>
       */
      public Builder setToken(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        token_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string token = 2;</code>
       */
      public Builder clearToken() {
        bitField0_ = (bitField0_ & ~0x00000002);
        token_ = getDefaultInstance().getToken();
        onChanged();
        return this;
      }
      /**
       * <code>required string token = 2;</code>
       */
      public Builder setTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        token_ = value;
        onChanged();
        return this;
      }

      // required string server = 3;
      private java.lang.Object server_ = "";
      /**
       * <code>required string server = 3;</code>
       */
      public boolean hasServer() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string server = 3;</code>
       */
      public java.lang.String getServer() {
        java.lang.Object ref = server_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          server_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string server = 3;</code>
       */
      public com.google.protobuf.ByteString
          getServerBytes() {
        java.lang.Object ref = server_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          server_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string server = 3;</code>
       */
      public Builder setServer(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        server_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string server = 3;</code>
       */
      public Builder clearServer() {
        bitField0_ = (bitField0_ & ~0x00000004);
        server_ = getDefaultInstance().getServer();
        onChanged();
        return this;
      }
      /**
       * <code>required string server = 3;</code>
       */
      public Builder setServerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        server_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetUploadTokenResult)
    }

    static {
      defaultInstance = new GetUploadTokenResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetUploadTokenResult)
  }

  public interface HandleFriendRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string target_uid = 1;
    /**
     * <code>required string target_uid = 1;</code>
     */
    boolean hasTargetUid();
    /**
     * <code>required string target_uid = 1;</code>
     */
    java.lang.String getTargetUid();
    /**
     * <code>required string target_uid = 1;</code>
     */
    com.google.protobuf.ByteString
        getTargetUidBytes();

    // required int32 status = 2;
    /**
     * <code>required int32 status = 2;</code>
     */
    boolean hasStatus();
    /**
     * <code>required int32 status = 2;</code>
     */
    int getStatus();
  }
  /**
   * Protobuf type {@code HandleFriendRequest}
   */
  public static final class HandleFriendRequest extends
      com.google.protobuf.GeneratedMessage
      implements HandleFriendRequestOrBuilder {
    // Use HandleFriendRequest.newBuilder() to construct.
    private HandleFriendRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private HandleFriendRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final HandleFriendRequest defaultInstance;
    public static HandleFriendRequest getDefaultInstance() {
      return defaultInstance;
    }

    public HandleFriendRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private HandleFriendRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              targetUid_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              status_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_HandleFriendRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_HandleFriendRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.HandleFriendRequest.class, cn.wildfirechat.proto.WFCMessage.HandleFriendRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<HandleFriendRequest> PARSER =
        new com.google.protobuf.AbstractParser<HandleFriendRequest>() {
      public HandleFriendRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HandleFriendRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string target_uid = 1;
    public static final int TARGET_UID_FIELD_NUMBER = 1;
    private java.lang.Object targetUid_;
    /**
     * <code>required string target_uid = 1;</code>
     */
    public boolean hasTargetUid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string target_uid = 1;</code>
     */
    public java.lang.String getTargetUid() {
      java.lang.Object ref = targetUid_;
      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();
        if (bs.isValidUtf8()) {
          targetUid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string target_uid = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTargetUidBytes() {
      java.lang.Object ref = targetUid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetUid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 status = 2;
    public static final int STATUS_FIELD_NUMBER = 2;
    private int status_;
    /**
     * <code>required int32 status = 2;</code>
     */
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 status = 2;</code>
     */
    public int getStatus() {
      return status_;
    }

    private void initFields() {
      targetUid_ = "";
      status_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasTargetUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasStatus()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getTargetUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, status_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getTargetUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, status_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.HandleFriendRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code HandleFriendRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.HandleFriendRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_HandleFriendRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_HandleFriendRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.HandleFriendRequest.class, cn.wildfirechat.proto.WFCMessage.HandleFriendRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.HandleFriendRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        targetUid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        status_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_HandleFriendRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.HandleFriendRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.HandleFriendRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.HandleFriendRequest build() {
        cn.wildfirechat.proto.WFCMessage.HandleFriendRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.HandleFriendRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.HandleFriendRequest result = new cn.wildfirechat.proto.WFCMessage.HandleFriendRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.targetUid_ = targetUid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.status_ = status_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.HandleFriendRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.HandleFriendRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.HandleFriendRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.HandleFriendRequest.getDefaultInstance()) return this;
        if (other.hasTargetUid()) {
          bitField0_ |= 0x00000001;
          targetUid_ = other.targetUid_;
          onChanged();
        }
        if (other.hasStatus()) {
          setStatus(other.getStatus());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTargetUid()) {
          
          return false;
        }
        if (!hasStatus()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.HandleFriendRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.HandleFriendRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string target_uid = 1;
      private java.lang.Object targetUid_ = "";
      /**
       * <code>required string target_uid = 1;</code>
       */
      public boolean hasTargetUid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public java.lang.String getTargetUid() {
        java.lang.Object ref = targetUid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          targetUid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTargetUidBytes() {
        java.lang.Object ref = targetUid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetUid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public Builder setTargetUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        targetUid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public Builder clearTargetUid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetUid_ = getDefaultInstance().getTargetUid();
        onChanged();
        return this;
      }
      /**
       * <code>required string target_uid = 1;</code>
       */
      public Builder setTargetUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        targetUid_ = value;
        onChanged();
        return this;
      }

      // required int32 status = 2;
      private int status_ ;
      /**
       * <code>required int32 status = 2;</code>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 status = 2;</code>
       */
      public int getStatus() {
        return status_;
      }
      /**
       * <code>required int32 status = 2;</code>
       */
      public Builder setStatus(int value) {
        bitField0_ |= 0x00000002;
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 status = 2;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000002);
        status_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:HandleFriendRequest)
    }

    static {
      defaultInstance = new HandleFriendRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:HandleFriendRequest)
  }

  public interface IDBufOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string id = 1;
    /**
     * <code>required string id = 1;</code>
     */
    boolean hasId();
    /**
     * <code>required string id = 1;</code>
     */
    java.lang.String getId();
    /**
     * <code>required string id = 1;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();
  }
  /**
   * Protobuf type {@code IDBuf}
   */
  public static final class IDBuf extends
      com.google.protobuf.GeneratedMessage
      implements IDBufOrBuilder {
    // Use IDBuf.newBuilder() to construct.
    private IDBuf(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IDBuf(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IDBuf defaultInstance;
    public static IDBuf getDefaultInstance() {
      return defaultInstance;
    }

    public IDBuf getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IDBuf(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              id_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_IDBuf_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_IDBuf_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.IDBuf.class, cn.wildfirechat.proto.WFCMessage.IDBuf.Builder.class);
    }

    public static com.google.protobuf.Parser<IDBuf> PARSER =
        new com.google.protobuf.AbstractParser<IDBuf>() {
      public IDBuf parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IDBuf(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private java.lang.Object id_;
    /**
     * <code>required string id = 1;</code>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string id = 1;</code>
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        if (bs.isValidUtf8()) {
          id_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      id_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIdBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIdBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDBuf parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.IDBuf prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IDBuf}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.IDBufOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_IDBuf_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_IDBuf_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.IDBuf.class, cn.wildfirechat.proto.WFCMessage.IDBuf.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.IDBuf.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        id_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_IDBuf_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.IDBuf getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.IDBuf.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.IDBuf build() {
        cn.wildfirechat.proto.WFCMessage.IDBuf result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.IDBuf buildPartial() {
        cn.wildfirechat.proto.WFCMessage.IDBuf result = new cn.wildfirechat.proto.WFCMessage.IDBuf(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.id_ = id_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.IDBuf) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.IDBuf)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.IDBuf other) {
        if (other == cn.wildfirechat.proto.WFCMessage.IDBuf.getDefaultInstance()) return this;
        if (other.hasId()) {
          bitField0_ |= 0x00000001;
          id_ = other.id_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasId()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.IDBuf parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.IDBuf) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string id = 1;
      private java.lang.Object id_ = "";
      /**
       * <code>required string id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string id = 1;</code>
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string id = 1;</code>
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string id = 1;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <code>required string id = 1;</code>
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        id_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IDBuf)
    }

    static {
      defaultInstance = new IDBuf(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IDBuf)
  }

  public interface IDListBufOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated string id = 1;
    /**
     * <code>repeated string id = 1;</code>
     */
    java.util.List<java.lang.String>
    getIdList();
    /**
     * <code>repeated string id = 1;</code>
     */
    int getIdCount();
    /**
     * <code>repeated string id = 1;</code>
     */
    java.lang.String getId(int index);
    /**
     * <code>repeated string id = 1;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes(int index);
  }
  /**
   * Protobuf type {@code IDListBuf}
   */
  public static final class IDListBuf extends
      com.google.protobuf.GeneratedMessage
      implements IDListBufOrBuilder {
    // Use IDListBuf.newBuilder() to construct.
    private IDListBuf(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IDListBuf(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IDListBuf defaultInstance;
    public static IDListBuf getDefaultInstance() {
      return defaultInstance;
    }

    public IDListBuf getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IDListBuf(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                id_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              id_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          id_ = new com.google.protobuf.UnmodifiableLazyStringList(id_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_IDListBuf_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_IDListBuf_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.IDListBuf.class, cn.wildfirechat.proto.WFCMessage.IDListBuf.Builder.class);
    }

    public static com.google.protobuf.Parser<IDListBuf> PARSER =
        new com.google.protobuf.AbstractParser<IDListBuf>() {
      public IDListBuf parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IDListBuf(input, extensionRegistry);
      }
    };

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

    // repeated string id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList id_;
    /**
     * <code>repeated string id = 1;</code>
     */
    public java.util.List<java.lang.String>
        getIdList() {
      return id_;
    }
    /**
     * <code>repeated string id = 1;</code>
     */
    public int getIdCount() {
      return id_.size();
    }
    /**
     * <code>repeated string id = 1;</code>
     */
    public java.lang.String getId(int index) {
      return id_.get(index);
    }
    /**
     * <code>repeated string id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes(int index) {
      return id_.getByteString(index);
    }

    private void initFields() {
      id_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < id_.size(); i++) {
        output.writeBytes(1, id_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < id_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(id_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getIdList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.IDListBuf parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.IDListBuf prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IDListBuf}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.IDListBufOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_IDListBuf_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_IDListBuf_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.IDListBuf.class, cn.wildfirechat.proto.WFCMessage.IDListBuf.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.IDListBuf.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        id_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_IDListBuf_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.IDListBuf getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.IDListBuf.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.IDListBuf build() {
        cn.wildfirechat.proto.WFCMessage.IDListBuf result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.IDListBuf buildPartial() {
        cn.wildfirechat.proto.WFCMessage.IDListBuf result = new cn.wildfirechat.proto.WFCMessage.IDListBuf(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          id_ = new com.google.protobuf.UnmodifiableLazyStringList(
              id_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.id_ = id_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.IDListBuf) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.IDListBuf)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.IDListBuf other) {
        if (other == cn.wildfirechat.proto.WFCMessage.IDListBuf.getDefaultInstance()) return this;
        if (!other.id_.isEmpty()) {
          if (id_.isEmpty()) {
            id_ = other.id_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureIdIsMutable();
            id_.addAll(other.id_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.IDListBuf parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.IDListBuf) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated string id = 1;
      private com.google.protobuf.LazyStringList id_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureIdIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          id_ = new com.google.protobuf.LazyStringArrayList(id_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string id = 1;</code>
       */
      public java.util.List<java.lang.String>
          getIdList() {
        return java.util.Collections.unmodifiableList(id_);
      }
      /**
       * <code>repeated string id = 1;</code>
       */
      public int getIdCount() {
        return id_.size();
      }
      /**
       * <code>repeated string id = 1;</code>
       */
      public java.lang.String getId(int index) {
        return id_.get(index);
      }
      /**
       * <code>repeated string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes(int index) {
        return id_.getByteString(index);
      }
      /**
       * <code>repeated string id = 1;</code>
       */
      public Builder setId(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIdIsMutable();
        id_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string id = 1;</code>
       */
      public Builder addId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIdIsMutable();
        id_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string id = 1;</code>
       */
      public Builder addAllId(
          java.lang.Iterable<java.lang.String> values) {
        ensureIdIsMutable();
        super.addAll(values, id_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string id = 1;</code>
       */
      public Builder clearId() {
        id_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string id = 1;</code>
       */
      public Builder addIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIdIsMutable();
        id_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IDListBuf)
    }

    static {
      defaultInstance = new IDListBuf(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IDListBuf)
  }

  public interface MessageOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .Conversation conversation = 1;
    /**
     * <code>required .Conversation conversation = 1;</code>
     */
    boolean hasConversation();
    /**
     * <code>required .Conversation conversation = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.Conversation getConversation();
    /**
     * <code>required .Conversation conversation = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.ConversationOrBuilder getConversationOrBuilder();

    // required string from_user = 2;
    /**
     * <code>required string from_user = 2;</code>
     */
    boolean hasFromUser();
    /**
     * <code>required string from_user = 2;</code>
     */
    java.lang.String getFromUser();
    /**
     * <code>required string from_user = 2;</code>
     */
    com.google.protobuf.ByteString
        getFromUserBytes();

    // required .MessageContent content = 3;
    /**
     * <code>required .MessageContent content = 3;</code>
     */
    boolean hasContent();
    /**
     * <code>required .MessageContent content = 3;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContent getContent();
    /**
     * <code>required .MessageContent content = 3;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getContentOrBuilder();

    // optional int64 message_id = 4;
    /**
     * <code>optional int64 message_id = 4;</code>
     */
    boolean hasMessageId();
    /**
     * <code>optional int64 message_id = 4;</code>
     */
    long getMessageId();

    // optional int64 server_timestamp = 5;
    /**
     * <code>optional int64 server_timestamp = 5;</code>
     */
    boolean hasServerTimestamp();
    /**
     * <code>optional int64 server_timestamp = 5;</code>
     */
    long getServerTimestamp();

    // optional string to_user = 6;
    /**
     * <code>optional string to_user = 6;</code>
     */
    boolean hasToUser();
    /**
     * <code>optional string to_user = 6;</code>
     */
    java.lang.String getToUser();
    /**
     * <code>optional string to_user = 6;</code>
     */
    com.google.protobuf.ByteString
        getToUserBytes();
  }
  /**
   * Protobuf type {@code Message}
   */
  public static final class Message extends
      com.google.protobuf.GeneratedMessage
      implements MessageOrBuilder {
    // Use Message.newBuilder() to construct.
    private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Message defaultInstance;
    public static Message getDefaultInstance() {
      return defaultInstance;
    }

    public Message getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Message(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              cn.wildfirechat.proto.WFCMessage.Conversation.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = conversation_.toBuilder();
              }
              conversation_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.Conversation.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(conversation_);
                conversation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              fromUser_ = input.readBytes();
              break;
            }
            case 26: {
              cn.wildfirechat.proto.WFCMessage.MessageContent.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = content_.toBuilder();
              }
              content_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.MessageContent.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(content_);
                content_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              messageId_ = input.readInt64();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              serverTimestamp_ = input.readInt64();
              break;
            }
            case 50: {
              bitField0_ |= 0x00000020;
              toUser_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Message_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Message_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.Message.class, cn.wildfirechat.proto.WFCMessage.Message.Builder.class);
    }

    public static com.google.protobuf.Parser<Message> PARSER =
        new com.google.protobuf.AbstractParser<Message>() {
      public Message parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Message(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required .Conversation conversation = 1;
    public static final int CONVERSATION_FIELD_NUMBER = 1;
    private cn.wildfirechat.proto.WFCMessage.Conversation conversation_;
    /**
     * <code>required .Conversation conversation = 1;</code>
     */
    public boolean hasConversation() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .Conversation conversation = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.Conversation getConversation() {
      return conversation_;
    }
    /**
     * <code>required .Conversation conversation = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.ConversationOrBuilder getConversationOrBuilder() {
      return conversation_;
    }

    // required string from_user = 2;
    public static final int FROM_USER_FIELD_NUMBER = 2;
    private java.lang.Object fromUser_;
    /**
     * <code>required string from_user = 2;</code>
     */
    public boolean hasFromUser() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string from_user = 2;</code>
     */
    public java.lang.String getFromUser() {
      java.lang.Object ref = fromUser_;
      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();
        if (bs.isValidUtf8()) {
          fromUser_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string from_user = 2;</code>
     */
    public com.google.protobuf.ByteString
        getFromUserBytes() {
      java.lang.Object ref = fromUser_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fromUser_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required .MessageContent content = 3;
    public static final int CONTENT_FIELD_NUMBER = 3;
    private cn.wildfirechat.proto.WFCMessage.MessageContent content_;
    /**
     * <code>required .MessageContent content = 3;</code>
     */
    public boolean hasContent() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .MessageContent content = 3;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContent getContent() {
      return content_;
    }
    /**
     * <code>required .MessageContent content = 3;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getContentOrBuilder() {
      return content_;
    }

    // optional int64 message_id = 4;
    public static final int MESSAGE_ID_FIELD_NUMBER = 4;
    private long messageId_;
    /**
     * <code>optional int64 message_id = 4;</code>
     */
    public boolean hasMessageId() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int64 message_id = 4;</code>
     */
    public long getMessageId() {
      return messageId_;
    }

    // optional int64 server_timestamp = 5;
    public static final int SERVER_TIMESTAMP_FIELD_NUMBER = 5;
    private long serverTimestamp_;
    /**
     * <code>optional int64 server_timestamp = 5;</code>
     */
    public boolean hasServerTimestamp() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int64 server_timestamp = 5;</code>
     */
    public long getServerTimestamp() {
      return serverTimestamp_;
    }

    // optional string to_user = 6;
    public static final int TO_USER_FIELD_NUMBER = 6;
    private java.lang.Object toUser_;
    /**
     * <code>optional string to_user = 6;</code>
     */
    public boolean hasToUser() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional string to_user = 6;</code>
     */
    public java.lang.String getToUser() {
      java.lang.Object ref = toUser_;
      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();
        if (bs.isValidUtf8()) {
          toUser_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string to_user = 6;</code>
     */
    public com.google.protobuf.ByteString
        getToUserBytes() {
      java.lang.Object ref = toUser_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toUser_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      conversation_ = cn.wildfirechat.proto.WFCMessage.Conversation.getDefaultInstance();
      fromUser_ = "";
      content_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      messageId_ = 0L;
      serverTimestamp_ = 0L;
      toUser_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasConversation()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasFromUser()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasContent()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getConversation().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getContent().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, conversation_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getFromUserBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, content_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt64(4, messageId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt64(5, serverTimestamp_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBytes(6, getToUserBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, conversation_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getFromUserBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, content_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, messageId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, serverTimestamp_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, getToUserBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.Message parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Message parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Message parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Message parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Message parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Message parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Message parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Message parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Message parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Message parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.Message prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Message}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.MessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Message_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Message_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.Message.class, cn.wildfirechat.proto.WFCMessage.Message.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.Message.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getConversationFieldBuilder();
          getContentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (conversationBuilder_ == null) {
          conversation_ = cn.wildfirechat.proto.WFCMessage.Conversation.getDefaultInstance();
        } else {
          conversationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        fromUser_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        if (contentBuilder_ == null) {
          content_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
        } else {
          contentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        messageId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        serverTimestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        toUser_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Message_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.Message getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.Message.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.Message build() {
        cn.wildfirechat.proto.WFCMessage.Message result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.Message buildPartial() {
        cn.wildfirechat.proto.WFCMessage.Message result = new cn.wildfirechat.proto.WFCMessage.Message(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (conversationBuilder_ == null) {
          result.conversation_ = conversation_;
        } else {
          result.conversation_ = conversationBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.fromUser_ = fromUser_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (contentBuilder_ == null) {
          result.content_ = content_;
        } else {
          result.content_ = contentBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.messageId_ = messageId_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.serverTimestamp_ = serverTimestamp_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.toUser_ = toUser_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.Message) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.Message)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.Message other) {
        if (other == cn.wildfirechat.proto.WFCMessage.Message.getDefaultInstance()) return this;
        if (other.hasConversation()) {
          mergeConversation(other.getConversation());
        }
        if (other.hasFromUser()) {
          bitField0_ |= 0x00000002;
          fromUser_ = other.fromUser_;
          onChanged();
        }
        if (other.hasContent()) {
          mergeContent(other.getContent());
        }
        if (other.hasMessageId()) {
          setMessageId(other.getMessageId());
        }
        if (other.hasServerTimestamp()) {
          setServerTimestamp(other.getServerTimestamp());
        }
        if (other.hasToUser()) {
          bitField0_ |= 0x00000020;
          toUser_ = other.toUser_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasConversation()) {
          
          return false;
        }
        if (!hasFromUser()) {
          
          return false;
        }
        if (!hasContent()) {
          
          return false;
        }
        if (!getConversation().isInitialized()) {
          
          return false;
        }
        if (!getContent().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.Message parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.Message) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .Conversation conversation = 1;
      private cn.wildfirechat.proto.WFCMessage.Conversation conversation_ = cn.wildfirechat.proto.WFCMessage.Conversation.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Conversation, cn.wildfirechat.proto.WFCMessage.Conversation.Builder, cn.wildfirechat.proto.WFCMessage.ConversationOrBuilder> conversationBuilder_;
      /**
       * <code>required .Conversation conversation = 1;</code>
       */
      public boolean hasConversation() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .Conversation conversation = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Conversation getConversation() {
        if (conversationBuilder_ == null) {
          return conversation_;
        } else {
          return conversationBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Conversation conversation = 1;</code>
       */
      public Builder setConversation(cn.wildfirechat.proto.WFCMessage.Conversation value) {
        if (conversationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          conversation_ = value;
          onChanged();
        } else {
          conversationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Conversation conversation = 1;</code>
       */
      public Builder setConversation(
          cn.wildfirechat.proto.WFCMessage.Conversation.Builder builderForValue) {
        if (conversationBuilder_ == null) {
          conversation_ = builderForValue.build();
          onChanged();
        } else {
          conversationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Conversation conversation = 1;</code>
       */
      public Builder mergeConversation(cn.wildfirechat.proto.WFCMessage.Conversation value) {
        if (conversationBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              conversation_ != cn.wildfirechat.proto.WFCMessage.Conversation.getDefaultInstance()) {
            conversation_ =
              cn.wildfirechat.proto.WFCMessage.Conversation.newBuilder(conversation_).mergeFrom(value).buildPartial();
          } else {
            conversation_ = value;
          }
          onChanged();
        } else {
          conversationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Conversation conversation = 1;</code>
       */
      public Builder clearConversation() {
        if (conversationBuilder_ == null) {
          conversation_ = cn.wildfirechat.proto.WFCMessage.Conversation.getDefaultInstance();
          onChanged();
        } else {
          conversationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .Conversation conversation = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Conversation.Builder getConversationBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getConversationFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Conversation conversation = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.ConversationOrBuilder getConversationOrBuilder() {
        if (conversationBuilder_ != null) {
          return conversationBuilder_.getMessageOrBuilder();
        } else {
          return conversation_;
        }
      }
      /**
       * <code>required .Conversation conversation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Conversation, cn.wildfirechat.proto.WFCMessage.Conversation.Builder, cn.wildfirechat.proto.WFCMessage.ConversationOrBuilder> 
          getConversationFieldBuilder() {
        if (conversationBuilder_ == null) {
          conversationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.Conversation, cn.wildfirechat.proto.WFCMessage.Conversation.Builder, cn.wildfirechat.proto.WFCMessage.ConversationOrBuilder>(
                  conversation_,
                  getParentForChildren(),
                  isClean());
          conversation_ = null;
        }
        return conversationBuilder_;
      }

      // required string from_user = 2;
      private java.lang.Object fromUser_ = "";
      /**
       * <code>required string from_user = 2;</code>
       */
      public boolean hasFromUser() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public java.lang.String getFromUser() {
        java.lang.Object ref = fromUser_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          fromUser_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public com.google.protobuf.ByteString
          getFromUserBytes() {
        java.lang.Object ref = fromUser_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fromUser_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public Builder setFromUser(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        fromUser_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public Builder clearFromUser() {
        bitField0_ = (bitField0_ & ~0x00000002);
        fromUser_ = getDefaultInstance().getFromUser();
        onChanged();
        return this;
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public Builder setFromUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        fromUser_ = value;
        onChanged();
        return this;
      }

      // required .MessageContent content = 3;
      private cn.wildfirechat.proto.WFCMessage.MessageContent content_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> contentBuilder_;
      /**
       * <code>required .MessageContent content = 3;</code>
       */
      public boolean hasContent() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .MessageContent content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent getContent() {
        if (contentBuilder_ == null) {
          return content_;
        } else {
          return contentBuilder_.getMessage();
        }
      }
      /**
       * <code>required .MessageContent content = 3;</code>
       */
      public Builder setContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (contentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          content_ = value;
          onChanged();
        } else {
          contentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .MessageContent content = 3;</code>
       */
      public Builder setContent(
          cn.wildfirechat.proto.WFCMessage.MessageContent.Builder builderForValue) {
        if (contentBuilder_ == null) {
          content_ = builderForValue.build();
          onChanged();
        } else {
          contentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .MessageContent content = 3;</code>
       */
      public Builder mergeContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (contentBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              content_ != cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) {
            content_ =
              cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder(content_).mergeFrom(value).buildPartial();
          } else {
            content_ = value;
          }
          onChanged();
        } else {
          contentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .MessageContent content = 3;</code>
       */
      public Builder clearContent() {
        if (contentBuilder_ == null) {
          content_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
          onChanged();
        } else {
          contentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>required .MessageContent content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent.Builder getContentBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getContentFieldBuilder().getBuilder();
      }
      /**
       * <code>required .MessageContent content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getContentOrBuilder() {
        if (contentBuilder_ != null) {
          return contentBuilder_.getMessageOrBuilder();
        } else {
          return content_;
        }
      }
      /**
       * <code>required .MessageContent content = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> 
          getContentFieldBuilder() {
        if (contentBuilder_ == null) {
          contentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder>(
                  content_,
                  getParentForChildren(),
                  isClean());
          content_ = null;
        }
        return contentBuilder_;
      }

      // optional int64 message_id = 4;
      private long messageId_ ;
      /**
       * <code>optional int64 message_id = 4;</code>
       */
      public boolean hasMessageId() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int64 message_id = 4;</code>
       */
      public long getMessageId() {
        return messageId_;
      }
      /**
       * <code>optional int64 message_id = 4;</code>
       */
      public Builder setMessageId(long value) {
        bitField0_ |= 0x00000008;
        messageId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 message_id = 4;</code>
       */
      public Builder clearMessageId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        messageId_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 server_timestamp = 5;
      private long serverTimestamp_ ;
      /**
       * <code>optional int64 server_timestamp = 5;</code>
       */
      public boolean hasServerTimestamp() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int64 server_timestamp = 5;</code>
       */
      public long getServerTimestamp() {
        return serverTimestamp_;
      }
      /**
       * <code>optional int64 server_timestamp = 5;</code>
       */
      public Builder setServerTimestamp(long value) {
        bitField0_ |= 0x00000010;
        serverTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 server_timestamp = 5;</code>
       */
      public Builder clearServerTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000010);
        serverTimestamp_ = 0L;
        onChanged();
        return this;
      }

      // optional string to_user = 6;
      private java.lang.Object toUser_ = "";
      /**
       * <code>optional string to_user = 6;</code>
       */
      public boolean hasToUser() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional string to_user = 6;</code>
       */
      public java.lang.String getToUser() {
        java.lang.Object ref = toUser_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          toUser_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string to_user = 6;</code>
       */
      public com.google.protobuf.ByteString
          getToUserBytes() {
        java.lang.Object ref = toUser_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toUser_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string to_user = 6;</code>
       */
      public Builder setToUser(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        toUser_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string to_user = 6;</code>
       */
      public Builder clearToUser() {
        bitField0_ = (bitField0_ & ~0x00000020);
        toUser_ = getDefaultInstance().getToUser();
        onChanged();
        return this;
      }
      /**
       * <code>optional string to_user = 6;</code>
       */
      public Builder setToUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        toUser_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Message)
    }

    static {
      defaultInstance = new Message(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Message)
  }

  public interface UserOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string uid = 1;
    /**
     * <code>required string uid = 1;</code>
     */
    boolean hasUid();
    /**
     * <code>required string uid = 1;</code>
     */
    java.lang.String getUid();
    /**
     * <code>required string uid = 1;</code>
     */
    com.google.protobuf.ByteString
        getUidBytes();

    // optional string name = 2;
    /**
     * <code>optional string name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>optional string name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <code>optional string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    // optional string display_name = 3;
    /**
     * <code>optional string display_name = 3;</code>
     */
    boolean hasDisplayName();
    /**
     * <code>optional string display_name = 3;</code>
     */
    java.lang.String getDisplayName();
    /**
     * <code>optional string display_name = 3;</code>
     */
    com.google.protobuf.ByteString
        getDisplayNameBytes();

    // optional string portrait = 4;
    /**
     * <code>optional string portrait = 4;</code>
     */
    boolean hasPortrait();
    /**
     * <code>optional string portrait = 4;</code>
     */
    java.lang.String getPortrait();
    /**
     * <code>optional string portrait = 4;</code>
     */
    com.google.protobuf.ByteString
        getPortraitBytes();

    // optional string mobile = 5;
    /**
     * <code>optional string mobile = 5;</code>
     */
    boolean hasMobile();
    /**
     * <code>optional string mobile = 5;</code>
     */
    java.lang.String getMobile();
    /**
     * <code>optional string mobile = 5;</code>
     */
    com.google.protobuf.ByteString
        getMobileBytes();

    // optional string email = 6;
    /**
     * <code>optional string email = 6;</code>
     */
    boolean hasEmail();
    /**
     * <code>optional string email = 6;</code>
     */
    java.lang.String getEmail();
    /**
     * <code>optional string email = 6;</code>
     */
    com.google.protobuf.ByteString
        getEmailBytes();

    // optional string address = 7;
    /**
     * <code>optional string address = 7;</code>
     */
    boolean hasAddress();
    /**
     * <code>optional string address = 7;</code>
     */
    java.lang.String getAddress();
    /**
     * <code>optional string address = 7;</code>
     */
    com.google.protobuf.ByteString
        getAddressBytes();

    // optional string company = 8;
    /**
     * <code>optional string company = 8;</code>
     */
    boolean hasCompany();
    /**
     * <code>optional string company = 8;</code>
     */
    java.lang.String getCompany();
    /**
     * <code>optional string company = 8;</code>
     */
    com.google.protobuf.ByteString
        getCompanyBytes();

    // optional string extra = 9;
    /**
     * <code>optional string extra = 9;</code>
     */
    boolean hasExtra();
    /**
     * <code>optional string extra = 9;</code>
     */
    java.lang.String getExtra();
    /**
     * <code>optional string extra = 9;</code>
     */
    com.google.protobuf.ByteString
        getExtraBytes();

    // optional int64 update_dt = 10;
    /**
     * <code>optional int64 update_dt = 10;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>optional int64 update_dt = 10;</code>
     */
    long getUpdateDt();

    // optional int32 gender = 11;
    /**
     * <code>optional int32 gender = 11;</code>
     */
    boolean hasGender();
    /**
     * <code>optional int32 gender = 11;</code>
     */
    int getGender();

    // optional string social = 12;
    /**
     * <code>optional string social = 12;</code>
     */
    boolean hasSocial();
    /**
     * <code>optional string social = 12;</code>
     */
    java.lang.String getSocial();
    /**
     * <code>optional string social = 12;</code>
     */
    com.google.protobuf.ByteString
        getSocialBytes();

    // optional int32 type = 13;
    /**
     * <code>optional int32 type = 13;</code>
     *
     * <pre>
     *0 normal user; 1 robot
     * </pre>
     */
    boolean hasType();
    /**
     * <code>optional int32 type = 13;</code>
     *
     * <pre>
     *0 normal user; 1 robot
     * </pre>
     */
    int getType();
  }
  /**
   * Protobuf type {@code User}
   */
  public static final class User extends
      com.google.protobuf.GeneratedMessage
      implements UserOrBuilder {
    // Use User.newBuilder() to construct.
    private User(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private User(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final User defaultInstance;
    public static User getDefaultInstance() {
      return defaultInstance;
    }

    public User getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private User(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              uid_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              name_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              displayName_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              portrait_ = input.readBytes();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              mobile_ = input.readBytes();
              break;
            }
            case 50: {
              bitField0_ |= 0x00000020;
              email_ = input.readBytes();
              break;
            }
            case 58: {
              bitField0_ |= 0x00000040;
              address_ = input.readBytes();
              break;
            }
            case 66: {
              bitField0_ |= 0x00000080;
              company_ = input.readBytes();
              break;
            }
            case 74: {
              bitField0_ |= 0x00000100;
              extra_ = input.readBytes();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000200;
              updateDt_ = input.readInt64();
              break;
            }
            case 88: {
              bitField0_ |= 0x00000400;
              gender_ = input.readInt32();
              break;
            }
            case 98: {
              bitField0_ |= 0x00000800;
              social_ = input.readBytes();
              break;
            }
            case 104: {
              bitField0_ |= 0x00001000;
              type_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_User_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_User_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.User.class, cn.wildfirechat.proto.WFCMessage.User.Builder.class);
    }

    public static com.google.protobuf.Parser<User> PARSER =
        new com.google.protobuf.AbstractParser<User>() {
      public User parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new User(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string uid = 1;
    public static final int UID_FIELD_NUMBER = 1;
    private java.lang.Object uid_;
    /**
     * <code>required string uid = 1;</code>
     */
    public boolean hasUid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public java.lang.String getUid() {
      java.lang.Object ref = uid_;
      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();
        if (bs.isValidUtf8()) {
          uid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUidBytes() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string name = 2;
    public static final int NAME_FIELD_NUMBER = 2;
    private java.lang.Object name_;
    /**
     * <code>optional string name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string display_name = 3;
    public static final int DISPLAY_NAME_FIELD_NUMBER = 3;
    private java.lang.Object displayName_;
    /**
     * <code>optional string display_name = 3;</code>
     */
    public boolean hasDisplayName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string display_name = 3;</code>
     */
    public java.lang.String getDisplayName() {
      java.lang.Object ref = displayName_;
      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();
        if (bs.isValidUtf8()) {
          displayName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string display_name = 3;</code>
     */
    public com.google.protobuf.ByteString
        getDisplayNameBytes() {
      java.lang.Object ref = displayName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        displayName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string portrait = 4;
    public static final int PORTRAIT_FIELD_NUMBER = 4;
    private java.lang.Object portrait_;
    /**
     * <code>optional string portrait = 4;</code>
     */
    public boolean hasPortrait() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string portrait = 4;</code>
     */
    public java.lang.String getPortrait() {
      java.lang.Object ref = portrait_;
      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();
        if (bs.isValidUtf8()) {
          portrait_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string portrait = 4;</code>
     */
    public com.google.protobuf.ByteString
        getPortraitBytes() {
      java.lang.Object ref = portrait_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        portrait_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string mobile = 5;
    public static final int MOBILE_FIELD_NUMBER = 5;
    private java.lang.Object mobile_;
    /**
     * <code>optional string mobile = 5;</code>
     */
    public boolean hasMobile() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional string mobile = 5;</code>
     */
    public java.lang.String getMobile() {
      java.lang.Object ref = mobile_;
      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();
        if (bs.isValidUtf8()) {
          mobile_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string mobile = 5;</code>
     */
    public com.google.protobuf.ByteString
        getMobileBytes() {
      java.lang.Object ref = mobile_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mobile_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string email = 6;
    public static final int EMAIL_FIELD_NUMBER = 6;
    private java.lang.Object email_;
    /**
     * <code>optional string email = 6;</code>
     */
    public boolean hasEmail() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional string email = 6;</code>
     */
    public java.lang.String getEmail() {
      java.lang.Object ref = email_;
      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();
        if (bs.isValidUtf8()) {
          email_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string email = 6;</code>
     */
    public com.google.protobuf.ByteString
        getEmailBytes() {
      java.lang.Object ref = email_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        email_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string address = 7;
    public static final int ADDRESS_FIELD_NUMBER = 7;
    private java.lang.Object address_;
    /**
     * <code>optional string address = 7;</code>
     */
    public boolean hasAddress() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional string address = 7;</code>
     */
    public java.lang.String getAddress() {
      java.lang.Object ref = address_;
      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();
        if (bs.isValidUtf8()) {
          address_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string address = 7;</code>
     */
    public com.google.protobuf.ByteString
        getAddressBytes() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        address_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string company = 8;
    public static final int COMPANY_FIELD_NUMBER = 8;
    private java.lang.Object company_;
    /**
     * <code>optional string company = 8;</code>
     */
    public boolean hasCompany() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional string company = 8;</code>
     */
    public java.lang.String getCompany() {
      java.lang.Object ref = company_;
      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();
        if (bs.isValidUtf8()) {
          company_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string company = 8;</code>
     */
    public com.google.protobuf.ByteString
        getCompanyBytes() {
      java.lang.Object ref = company_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        company_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string extra = 9;
    public static final int EXTRA_FIELD_NUMBER = 9;
    private java.lang.Object extra_;
    /**
     * <code>optional string extra = 9;</code>
     */
    public boolean hasExtra() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional string extra = 9;</code>
     */
    public java.lang.String getExtra() {
      java.lang.Object ref = extra_;
      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();
        if (bs.isValidUtf8()) {
          extra_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string extra = 9;</code>
     */
    public com.google.protobuf.ByteString
        getExtraBytes() {
      java.lang.Object ref = extra_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        extra_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 update_dt = 10;
    public static final int UPDATE_DT_FIELD_NUMBER = 10;
    private long updateDt_;
    /**
     * <code>optional int64 update_dt = 10;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional int64 update_dt = 10;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    // optional int32 gender = 11;
    public static final int GENDER_FIELD_NUMBER = 11;
    private int gender_;
    /**
     * <code>optional int32 gender = 11;</code>
     */
    public boolean hasGender() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <code>optional int32 gender = 11;</code>
     */
    public int getGender() {
      return gender_;
    }

    // optional string social = 12;
    public static final int SOCIAL_FIELD_NUMBER = 12;
    private java.lang.Object social_;
    /**
     * <code>optional string social = 12;</code>
     */
    public boolean hasSocial() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    /**
     * <code>optional string social = 12;</code>
     */
    public java.lang.String getSocial() {
      java.lang.Object ref = social_;
      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();
        if (bs.isValidUtf8()) {
          social_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string social = 12;</code>
     */
    public com.google.protobuf.ByteString
        getSocialBytes() {
      java.lang.Object ref = social_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        social_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 type = 13;
    public static final int TYPE_FIELD_NUMBER = 13;
    private int type_;
    /**
     * <code>optional int32 type = 13;</code>
     *
     * <pre>
     *0 normal user; 1 robot
     * </pre>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00001000) == 0x00001000);
    }
    /**
     * <code>optional int32 type = 13;</code>
     *
     * <pre>
     *0 normal user; 1 robot
     * </pre>
     */
    public int getType() {
      return type_;
    }

    private void initFields() {
      uid_ = "";
      name_ = "";
      displayName_ = "";
      portrait_ = "";
      mobile_ = "";
      email_ = "";
      address_ = "";
      company_ = "";
      extra_ = "";
      updateDt_ = 0L;
      gender_ = 0;
      social_ = "";
      type_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getDisplayNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getPortraitBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getMobileBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBytes(6, getEmailBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(7, getAddressBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBytes(8, getCompanyBytes());
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBytes(9, getExtraBytes());
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeInt64(10, updateDt_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeInt32(11, gender_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeBytes(12, getSocialBytes());
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeInt32(13, type_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getDisplayNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getPortraitBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getMobileBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, getEmailBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getAddressBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, getCompanyBytes());
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(9, getExtraBytes());
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(10, updateDt_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(11, gender_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(12, getSocialBytes());
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(13, type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.User parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.User parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.User parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.User parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.User parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.User parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.User parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.User parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.User parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.User parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.User prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code User}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.UserOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_User_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_User_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.User.class, cn.wildfirechat.proto.WFCMessage.User.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.User.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        displayName_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        portrait_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        mobile_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        email_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        address_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        company_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        extra_ = "";
        bitField0_ = (bitField0_ & ~0x00000100);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000200);
        gender_ = 0;
        bitField0_ = (bitField0_ & ~0x00000400);
        social_ = "";
        bitField0_ = (bitField0_ & ~0x00000800);
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00001000);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_User_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.User getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.User.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.User build() {
        cn.wildfirechat.proto.WFCMessage.User result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.User buildPartial() {
        cn.wildfirechat.proto.WFCMessage.User result = new cn.wildfirechat.proto.WFCMessage.User(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uid_ = uid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.displayName_ = displayName_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.portrait_ = portrait_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.mobile_ = mobile_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.email_ = email_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.address_ = address_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.company_ = company_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.extra_ = extra_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.updateDt_ = updateDt_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        result.gender_ = gender_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000800;
        }
        result.social_ = social_;
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00001000;
        }
        result.type_ = type_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.User) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.User)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.User other) {
        if (other == cn.wildfirechat.proto.WFCMessage.User.getDefaultInstance()) return this;
        if (other.hasUid()) {
          bitField0_ |= 0x00000001;
          uid_ = other.uid_;
          onChanged();
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000002;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasDisplayName()) {
          bitField0_ |= 0x00000004;
          displayName_ = other.displayName_;
          onChanged();
        }
        if (other.hasPortrait()) {
          bitField0_ |= 0x00000008;
          portrait_ = other.portrait_;
          onChanged();
        }
        if (other.hasMobile()) {
          bitField0_ |= 0x00000010;
          mobile_ = other.mobile_;
          onChanged();
        }
        if (other.hasEmail()) {
          bitField0_ |= 0x00000020;
          email_ = other.email_;
          onChanged();
        }
        if (other.hasAddress()) {
          bitField0_ |= 0x00000040;
          address_ = other.address_;
          onChanged();
        }
        if (other.hasCompany()) {
          bitField0_ |= 0x00000080;
          company_ = other.company_;
          onChanged();
        }
        if (other.hasExtra()) {
          bitField0_ |= 0x00000100;
          extra_ = other.extra_;
          onChanged();
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        if (other.hasGender()) {
          setGender(other.getGender());
        }
        if (other.hasSocial()) {
          bitField0_ |= 0x00000800;
          social_ = other.social_;
          onChanged();
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUid()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.User parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.User) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string uid = 1;
      private java.lang.Object uid_ = "";
      /**
       * <code>required string uid = 1;</code>
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public java.lang.String getUid() {
        java.lang.Object ref = uid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          uid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUidBytes() {
        java.lang.Object ref = uid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder clearUid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uid_ = getDefaultInstance().getUid();
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }

      // optional string name = 2;
      private java.lang.Object name_ = "";
      /**
       * <code>optional string name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
        return this;
      }

      // optional string display_name = 3;
      private java.lang.Object displayName_ = "";
      /**
       * <code>optional string display_name = 3;</code>
       */
      public boolean hasDisplayName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string display_name = 3;</code>
       */
      public java.lang.String getDisplayName() {
        java.lang.Object ref = displayName_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          displayName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string display_name = 3;</code>
       */
      public com.google.protobuf.ByteString
          getDisplayNameBytes() {
        java.lang.Object ref = displayName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          displayName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string display_name = 3;</code>
       */
      public Builder setDisplayName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        displayName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string display_name = 3;</code>
       */
      public Builder clearDisplayName() {
        bitField0_ = (bitField0_ & ~0x00000004);
        displayName_ = getDefaultInstance().getDisplayName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string display_name = 3;</code>
       */
      public Builder setDisplayNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        displayName_ = value;
        onChanged();
        return this;
      }

      // optional string portrait = 4;
      private java.lang.Object portrait_ = "";
      /**
       * <code>optional string portrait = 4;</code>
       */
      public boolean hasPortrait() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string portrait = 4;</code>
       */
      public java.lang.String getPortrait() {
        java.lang.Object ref = portrait_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          portrait_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string portrait = 4;</code>
       */
      public com.google.protobuf.ByteString
          getPortraitBytes() {
        java.lang.Object ref = portrait_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          portrait_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string portrait = 4;</code>
       */
      public Builder setPortrait(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        portrait_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string portrait = 4;</code>
       */
      public Builder clearPortrait() {
        bitField0_ = (bitField0_ & ~0x00000008);
        portrait_ = getDefaultInstance().getPortrait();
        onChanged();
        return this;
      }
      /**
       * <code>optional string portrait = 4;</code>
       */
      public Builder setPortraitBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        portrait_ = value;
        onChanged();
        return this;
      }

      // optional string mobile = 5;
      private java.lang.Object mobile_ = "";
      /**
       * <code>optional string mobile = 5;</code>
       */
      public boolean hasMobile() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional string mobile = 5;</code>
       */
      public java.lang.String getMobile() {
        java.lang.Object ref = mobile_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          mobile_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string mobile = 5;</code>
       */
      public com.google.protobuf.ByteString
          getMobileBytes() {
        java.lang.Object ref = mobile_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mobile_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string mobile = 5;</code>
       */
      public Builder setMobile(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        mobile_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string mobile = 5;</code>
       */
      public Builder clearMobile() {
        bitField0_ = (bitField0_ & ~0x00000010);
        mobile_ = getDefaultInstance().getMobile();
        onChanged();
        return this;
      }
      /**
       * <code>optional string mobile = 5;</code>
       */
      public Builder setMobileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        mobile_ = value;
        onChanged();
        return this;
      }

      // optional string email = 6;
      private java.lang.Object email_ = "";
      /**
       * <code>optional string email = 6;</code>
       */
      public boolean hasEmail() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional string email = 6;</code>
       */
      public java.lang.String getEmail() {
        java.lang.Object ref = email_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          email_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string email = 6;</code>
       */
      public com.google.protobuf.ByteString
          getEmailBytes() {
        java.lang.Object ref = email_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          email_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string email = 6;</code>
       */
      public Builder setEmail(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        email_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string email = 6;</code>
       */
      public Builder clearEmail() {
        bitField0_ = (bitField0_ & ~0x00000020);
        email_ = getDefaultInstance().getEmail();
        onChanged();
        return this;
      }
      /**
       * <code>optional string email = 6;</code>
       */
      public Builder setEmailBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        email_ = value;
        onChanged();
        return this;
      }

      // optional string address = 7;
      private java.lang.Object address_ = "";
      /**
       * <code>optional string address = 7;</code>
       */
      public boolean hasAddress() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional string address = 7;</code>
       */
      public java.lang.String getAddress() {
        java.lang.Object ref = address_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          address_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string address = 7;</code>
       */
      public com.google.protobuf.ByteString
          getAddressBytes() {
        java.lang.Object ref = address_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          address_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string address = 7;</code>
       */
      public Builder setAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        address_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string address = 7;</code>
       */
      public Builder clearAddress() {
        bitField0_ = (bitField0_ & ~0x00000040);
        address_ = getDefaultInstance().getAddress();
        onChanged();
        return this;
      }
      /**
       * <code>optional string address = 7;</code>
       */
      public Builder setAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        address_ = value;
        onChanged();
        return this;
      }

      // optional string company = 8;
      private java.lang.Object company_ = "";
      /**
       * <code>optional string company = 8;</code>
       */
      public boolean hasCompany() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional string company = 8;</code>
       */
      public java.lang.String getCompany() {
        java.lang.Object ref = company_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          company_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string company = 8;</code>
       */
      public com.google.protobuf.ByteString
          getCompanyBytes() {
        java.lang.Object ref = company_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          company_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string company = 8;</code>
       */
      public Builder setCompany(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        company_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string company = 8;</code>
       */
      public Builder clearCompany() {
        bitField0_ = (bitField0_ & ~0x00000080);
        company_ = getDefaultInstance().getCompany();
        onChanged();
        return this;
      }
      /**
       * <code>optional string company = 8;</code>
       */
      public Builder setCompanyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        company_ = value;
        onChanged();
        return this;
      }

      // optional string extra = 9;
      private java.lang.Object extra_ = "";
      /**
       * <code>optional string extra = 9;</code>
       */
      public boolean hasExtra() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional string extra = 9;</code>
       */
      public java.lang.String getExtra() {
        java.lang.Object ref = extra_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          extra_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string extra = 9;</code>
       */
      public com.google.protobuf.ByteString
          getExtraBytes() {
        java.lang.Object ref = extra_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          extra_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string extra = 9;</code>
       */
      public Builder setExtra(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        extra_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 9;</code>
       */
      public Builder clearExtra() {
        bitField0_ = (bitField0_ & ~0x00000100);
        extra_ = getDefaultInstance().getExtra();
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 9;</code>
       */
      public Builder setExtraBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        extra_ = value;
        onChanged();
        return this;
      }

      // optional int64 update_dt = 10;
      private long updateDt_ ;
      /**
       * <code>optional int64 update_dt = 10;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional int64 update_dt = 10;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>optional int64 update_dt = 10;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000200;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 update_dt = 10;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000200);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // optional int32 gender = 11;
      private int gender_ ;
      /**
       * <code>optional int32 gender = 11;</code>
       */
      public boolean hasGender() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional int32 gender = 11;</code>
       */
      public int getGender() {
        return gender_;
      }
      /**
       * <code>optional int32 gender = 11;</code>
       */
      public Builder setGender(int value) {
        bitField0_ |= 0x00000400;
        gender_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 gender = 11;</code>
       */
      public Builder clearGender() {
        bitField0_ = (bitField0_ & ~0x00000400);
        gender_ = 0;
        onChanged();
        return this;
      }

      // optional string social = 12;
      private java.lang.Object social_ = "";
      /**
       * <code>optional string social = 12;</code>
       */
      public boolean hasSocial() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional string social = 12;</code>
       */
      public java.lang.String getSocial() {
        java.lang.Object ref = social_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          social_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string social = 12;</code>
       */
      public com.google.protobuf.ByteString
          getSocialBytes() {
        java.lang.Object ref = social_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          social_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string social = 12;</code>
       */
      public Builder setSocial(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        social_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string social = 12;</code>
       */
      public Builder clearSocial() {
        bitField0_ = (bitField0_ & ~0x00000800);
        social_ = getDefaultInstance().getSocial();
        onChanged();
        return this;
      }
      /**
       * <code>optional string social = 12;</code>
       */
      public Builder setSocialBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        social_ = value;
        onChanged();
        return this;
      }

      // optional int32 type = 13;
      private int type_ ;
      /**
       * <code>optional int32 type = 13;</code>
       *
       * <pre>
       *0 normal user; 1 robot
       * </pre>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * <code>optional int32 type = 13;</code>
       *
       * <pre>
       *0 normal user; 1 robot
       * </pre>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>optional int32 type = 13;</code>
       *
       * <pre>
       *0 normal user; 1 robot
       * </pre>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00001000;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 type = 13;</code>
       *
       * <pre>
       *0 normal user; 1 robot
       * </pre>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00001000);
        type_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:User)
    }

    static {
      defaultInstance = new User(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:User)
  }

  public interface RobotOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string uid = 1;
    /**
     * <code>required string uid = 1;</code>
     */
    boolean hasUid();
    /**
     * <code>required string uid = 1;</code>
     */
    java.lang.String getUid();
    /**
     * <code>required string uid = 1;</code>
     */
    com.google.protobuf.ByteString
        getUidBytes();

    // required int32 state = 2;
    /**
     * <code>required int32 state = 2;</code>
     *
     * <pre>
     *0 normal; 1 deleted;
     * </pre>
     */
    boolean hasState();
    /**
     * <code>required int32 state = 2;</code>
     *
     * <pre>
     *0 normal; 1 deleted;
     * </pre>
     */
    int getState();

    // optional string owner = 3;
    /**
     * <code>optional string owner = 3;</code>
     */
    boolean hasOwner();
    /**
     * <code>optional string owner = 3;</code>
     */
    java.lang.String getOwner();
    /**
     * <code>optional string owner = 3;</code>
     */
    com.google.protobuf.ByteString
        getOwnerBytes();

    // optional string secret = 4;
    /**
     * <code>optional string secret = 4;</code>
     */
    boolean hasSecret();
    /**
     * <code>optional string secret = 4;</code>
     */
    java.lang.String getSecret();
    /**
     * <code>optional string secret = 4;</code>
     */
    com.google.protobuf.ByteString
        getSecretBytes();

    // optional string callback = 5;
    /**
     * <code>optional string callback = 5;</code>
     */
    boolean hasCallback();
    /**
     * <code>optional string callback = 5;</code>
     */
    java.lang.String getCallback();
    /**
     * <code>optional string callback = 5;</code>
     */
    com.google.protobuf.ByteString
        getCallbackBytes();

    // optional string extra = 6;
    /**
     * <code>optional string extra = 6;</code>
     */
    boolean hasExtra();
    /**
     * <code>optional string extra = 6;</code>
     */
    java.lang.String getExtra();
    /**
     * <code>optional string extra = 6;</code>
     */
    com.google.protobuf.ByteString
        getExtraBytes();
  }
  /**
   * Protobuf type {@code Robot}
   */
  public static final class Robot extends
      com.google.protobuf.GeneratedMessage
      implements RobotOrBuilder {
    // Use Robot.newBuilder() to construct.
    private Robot(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Robot(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Robot defaultInstance;
    public static Robot getDefaultInstance() {
      return defaultInstance;
    }

    public Robot getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Robot(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              uid_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              state_ = input.readInt32();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              owner_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              secret_ = input.readBytes();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              callback_ = input.readBytes();
              break;
            }
            case 50: {
              bitField0_ |= 0x00000020;
              extra_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Robot_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Robot_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.Robot.class, cn.wildfirechat.proto.WFCMessage.Robot.Builder.class);
    }

    public static com.google.protobuf.Parser<Robot> PARSER =
        new com.google.protobuf.AbstractParser<Robot>() {
      public Robot parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Robot(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string uid = 1;
    public static final int UID_FIELD_NUMBER = 1;
    private java.lang.Object uid_;
    /**
     * <code>required string uid = 1;</code>
     */
    public boolean hasUid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public java.lang.String getUid() {
      java.lang.Object ref = uid_;
      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();
        if (bs.isValidUtf8()) {
          uid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUidBytes() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 state = 2;
    public static final int STATE_FIELD_NUMBER = 2;
    private int state_;
    /**
     * <code>required int32 state = 2;</code>
     *
     * <pre>
     *0 normal; 1 deleted;
     * </pre>
     */
    public boolean hasState() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 state = 2;</code>
     *
     * <pre>
     *0 normal; 1 deleted;
     * </pre>
     */
    public int getState() {
      return state_;
    }

    // optional string owner = 3;
    public static final int OWNER_FIELD_NUMBER = 3;
    private java.lang.Object owner_;
    /**
     * <code>optional string owner = 3;</code>
     */
    public boolean hasOwner() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string owner = 3;</code>
     */
    public java.lang.String getOwner() {
      java.lang.Object ref = owner_;
      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();
        if (bs.isValidUtf8()) {
          owner_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string owner = 3;</code>
     */
    public com.google.protobuf.ByteString
        getOwnerBytes() {
      java.lang.Object ref = owner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        owner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string secret = 4;
    public static final int SECRET_FIELD_NUMBER = 4;
    private java.lang.Object secret_;
    /**
     * <code>optional string secret = 4;</code>
     */
    public boolean hasSecret() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string secret = 4;</code>
     */
    public java.lang.String getSecret() {
      java.lang.Object ref = secret_;
      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();
        if (bs.isValidUtf8()) {
          secret_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string secret = 4;</code>
     */
    public com.google.protobuf.ByteString
        getSecretBytes() {
      java.lang.Object ref = secret_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        secret_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string callback = 5;
    public static final int CALLBACK_FIELD_NUMBER = 5;
    private java.lang.Object callback_;
    /**
     * <code>optional string callback = 5;</code>
     */
    public boolean hasCallback() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional string callback = 5;</code>
     */
    public java.lang.String getCallback() {
      java.lang.Object ref = callback_;
      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();
        if (bs.isValidUtf8()) {
          callback_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string callback = 5;</code>
     */
    public com.google.protobuf.ByteString
        getCallbackBytes() {
      java.lang.Object ref = callback_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        callback_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string extra = 6;
    public static final int EXTRA_FIELD_NUMBER = 6;
    private java.lang.Object extra_;
    /**
     * <code>optional string extra = 6;</code>
     */
    public boolean hasExtra() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional string extra = 6;</code>
     */
    public java.lang.String getExtra() {
      java.lang.Object ref = extra_;
      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();
        if (bs.isValidUtf8()) {
          extra_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string extra = 6;</code>
     */
    public com.google.protobuf.ByteString
        getExtraBytes() {
      java.lang.Object ref = extra_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        extra_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      uid_ = "";
      state_ = 0;
      owner_ = "";
      secret_ = "";
      callback_ = "";
      extra_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasState()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, state_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getOwnerBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getSecretBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getCallbackBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBytes(6, getExtraBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, state_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getOwnerBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getSecretBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getCallbackBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, getExtraBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.Robot parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Robot parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Robot parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Robot parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Robot parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Robot parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Robot parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Robot parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Robot parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Robot parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.Robot prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Robot}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.RobotOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Robot_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Robot_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.Robot.class, cn.wildfirechat.proto.WFCMessage.Robot.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.Robot.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        state_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        owner_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        secret_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        callback_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        extra_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Robot_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.Robot getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.Robot.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.Robot build() {
        cn.wildfirechat.proto.WFCMessage.Robot result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.Robot buildPartial() {
        cn.wildfirechat.proto.WFCMessage.Robot result = new cn.wildfirechat.proto.WFCMessage.Robot(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uid_ = uid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.state_ = state_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.owner_ = owner_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.secret_ = secret_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.callback_ = callback_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.extra_ = extra_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.Robot) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.Robot)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.Robot other) {
        if (other == cn.wildfirechat.proto.WFCMessage.Robot.getDefaultInstance()) return this;
        if (other.hasUid()) {
          bitField0_ |= 0x00000001;
          uid_ = other.uid_;
          onChanged();
        }
        if (other.hasState()) {
          setState(other.getState());
        }
        if (other.hasOwner()) {
          bitField0_ |= 0x00000004;
          owner_ = other.owner_;
          onChanged();
        }
        if (other.hasSecret()) {
          bitField0_ |= 0x00000008;
          secret_ = other.secret_;
          onChanged();
        }
        if (other.hasCallback()) {
          bitField0_ |= 0x00000010;
          callback_ = other.callback_;
          onChanged();
        }
        if (other.hasExtra()) {
          bitField0_ |= 0x00000020;
          extra_ = other.extra_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUid()) {
          
          return false;
        }
        if (!hasState()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.Robot parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.Robot) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string uid = 1;
      private java.lang.Object uid_ = "";
      /**
       * <code>required string uid = 1;</code>
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public java.lang.String getUid() {
        java.lang.Object ref = uid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          uid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUidBytes() {
        java.lang.Object ref = uid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder clearUid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uid_ = getDefaultInstance().getUid();
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }

      // required int32 state = 2;
      private int state_ ;
      /**
       * <code>required int32 state = 2;</code>
       *
       * <pre>
       *0 normal; 1 deleted;
       * </pre>
       */
      public boolean hasState() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 state = 2;</code>
       *
       * <pre>
       *0 normal; 1 deleted;
       * </pre>
       */
      public int getState() {
        return state_;
      }
      /**
       * <code>required int32 state = 2;</code>
       *
       * <pre>
       *0 normal; 1 deleted;
       * </pre>
       */
      public Builder setState(int value) {
        bitField0_ |= 0x00000002;
        state_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 state = 2;</code>
       *
       * <pre>
       *0 normal; 1 deleted;
       * </pre>
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000002);
        state_ = 0;
        onChanged();
        return this;
      }

      // optional string owner = 3;
      private java.lang.Object owner_ = "";
      /**
       * <code>optional string owner = 3;</code>
       */
      public boolean hasOwner() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string owner = 3;</code>
       */
      public java.lang.String getOwner() {
        java.lang.Object ref = owner_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          owner_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string owner = 3;</code>
       */
      public com.google.protobuf.ByteString
          getOwnerBytes() {
        java.lang.Object ref = owner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          owner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string owner = 3;</code>
       */
      public Builder setOwner(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        owner_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string owner = 3;</code>
       */
      public Builder clearOwner() {
        bitField0_ = (bitField0_ & ~0x00000004);
        owner_ = getDefaultInstance().getOwner();
        onChanged();
        return this;
      }
      /**
       * <code>optional string owner = 3;</code>
       */
      public Builder setOwnerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        owner_ = value;
        onChanged();
        return this;
      }

      // optional string secret = 4;
      private java.lang.Object secret_ = "";
      /**
       * <code>optional string secret = 4;</code>
       */
      public boolean hasSecret() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string secret = 4;</code>
       */
      public java.lang.String getSecret() {
        java.lang.Object ref = secret_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          secret_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string secret = 4;</code>
       */
      public com.google.protobuf.ByteString
          getSecretBytes() {
        java.lang.Object ref = secret_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          secret_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string secret = 4;</code>
       */
      public Builder setSecret(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        secret_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string secret = 4;</code>
       */
      public Builder clearSecret() {
        bitField0_ = (bitField0_ & ~0x00000008);
        secret_ = getDefaultInstance().getSecret();
        onChanged();
        return this;
      }
      /**
       * <code>optional string secret = 4;</code>
       */
      public Builder setSecretBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        secret_ = value;
        onChanged();
        return this;
      }

      // optional string callback = 5;
      private java.lang.Object callback_ = "";
      /**
       * <code>optional string callback = 5;</code>
       */
      public boolean hasCallback() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional string callback = 5;</code>
       */
      public java.lang.String getCallback() {
        java.lang.Object ref = callback_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          callback_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string callback = 5;</code>
       */
      public com.google.protobuf.ByteString
          getCallbackBytes() {
        java.lang.Object ref = callback_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          callback_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string callback = 5;</code>
       */
      public Builder setCallback(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        callback_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string callback = 5;</code>
       */
      public Builder clearCallback() {
        bitField0_ = (bitField0_ & ~0x00000010);
        callback_ = getDefaultInstance().getCallback();
        onChanged();
        return this;
      }
      /**
       * <code>optional string callback = 5;</code>
       */
      public Builder setCallbackBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        callback_ = value;
        onChanged();
        return this;
      }

      // optional string extra = 6;
      private java.lang.Object extra_ = "";
      /**
       * <code>optional string extra = 6;</code>
       */
      public boolean hasExtra() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional string extra = 6;</code>
       */
      public java.lang.String getExtra() {
        java.lang.Object ref = extra_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          extra_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string extra = 6;</code>
       */
      public com.google.protobuf.ByteString
          getExtraBytes() {
        java.lang.Object ref = extra_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          extra_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string extra = 6;</code>
       */
      public Builder setExtra(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        extra_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 6;</code>
       */
      public Builder clearExtra() {
        bitField0_ = (bitField0_ & ~0x00000020);
        extra_ = getDefaultInstance().getExtra();
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 6;</code>
       */
      public Builder setExtraBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        extra_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Robot)
    }

    static {
      defaultInstance = new Robot(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Robot)
  }

  public interface GetRobotsResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .Robot entry = 1;
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.Robot> 
        getEntryList();
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.Robot getEntry(int index);
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    int getEntryCount();
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.RobotOrBuilder> 
        getEntryOrBuilderList();
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.RobotOrBuilder getEntryOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code GetRobotsResult}
   */
  public static final class GetRobotsResult extends
      com.google.protobuf.GeneratedMessage
      implements GetRobotsResultOrBuilder {
    // Use GetRobotsResult.newBuilder() to construct.
    private GetRobotsResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetRobotsResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetRobotsResult defaultInstance;
    public static GetRobotsResult getDefaultInstance() {
      return defaultInstance;
    }

    public GetRobotsResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetRobotsResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.Robot>();
                mutable_bitField0_ |= 0x00000001;
              }
              entry_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.Robot.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetRobotsResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetRobotsResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GetRobotsResult.class, cn.wildfirechat.proto.WFCMessage.GetRobotsResult.Builder.class);
    }

    public static com.google.protobuf.Parser<GetRobotsResult> PARSER =
        new com.google.protobuf.AbstractParser<GetRobotsResult>() {
      public GetRobotsResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetRobotsResult(input, extensionRegistry);
      }
    };

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

    // repeated .Robot entry = 1;
    public static final int ENTRY_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.Robot> entry_;
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.Robot> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.RobotOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.Robot getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .Robot entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.RobotOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    private void initFields() {
      entry_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getEntryCount(); i++) {
        if (!getEntry(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < entry_.size(); i++) {
        output.writeMessage(1, entry_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < entry_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, entry_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetRobotsResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GetRobotsResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetRobotsResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GetRobotsResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetRobotsResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetRobotsResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GetRobotsResult.class, cn.wildfirechat.proto.WFCMessage.GetRobotsResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GetRobotsResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getEntryFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          entryBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetRobotsResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GetRobotsResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GetRobotsResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GetRobotsResult build() {
        cn.wildfirechat.proto.WFCMessage.GetRobotsResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GetRobotsResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GetRobotsResult result = new cn.wildfirechat.proto.WFCMessage.GetRobotsResult(this);
        int from_bitField0_ = bitField0_;
        if (entryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            entry_ = java.util.Collections.unmodifiableList(entry_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.entry_ = entry_;
        } else {
          result.entry_ = entryBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GetRobotsResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GetRobotsResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GetRobotsResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GetRobotsResult.getDefaultInstance()) return this;
        if (entryBuilder_ == null) {
          if (!other.entry_.isEmpty()) {
            if (entry_.isEmpty()) {
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEntryIsMutable();
              entry_.addAll(other.entry_);
            }
            onChanged();
          }
        } else {
          if (!other.entry_.isEmpty()) {
            if (entryBuilder_.isEmpty()) {
              entryBuilder_.dispose();
              entryBuilder_ = null;
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
              entryBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEntryFieldBuilder() : null;
            } else {
              entryBuilder_.addAllMessages(other.entry_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GetRobotsResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GetRobotsResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .Robot entry = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.Robot> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.Robot>(entry_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Robot, cn.wildfirechat.proto.WFCMessage.Robot.Builder, cn.wildfirechat.proto.WFCMessage.RobotOrBuilder> entryBuilder_;

      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.Robot> getEntryList() {
        if (entryBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entry_);
        } else {
          return entryBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public int getEntryCount() {
        if (entryBuilder_ == null) {
          return entry_.size();
        } else {
          return entryBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Robot getEntry(int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);
        } else {
          return entryBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Robot value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.set(index, value);
          onChanged();
        } else {
          entryBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Robot.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.set(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public Builder addEntry(cn.wildfirechat.proto.WFCMessage.Robot value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(value);
          onChanged();
        } else {
          entryBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Robot value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(index, value);
          onChanged();
        } else {
          entryBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public Builder addEntry(
          cn.wildfirechat.proto.WFCMessage.Robot.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Robot.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.Robot> values) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          super.addAll(values, entry_);
          onChanged();
        } else {
          entryBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public Builder clearEntry() {
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          entryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public Builder removeEntry(int index) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.remove(index);
          onChanged();
        } else {
          entryBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Robot.Builder getEntryBuilder(
          int index) {
        return getEntryFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.RobotOrBuilder getEntryOrBuilder(
          int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);  } else {
          return entryBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.RobotOrBuilder> 
           getEntryOrBuilderList() {
        if (entryBuilder_ != null) {
          return entryBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entry_);
        }
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Robot.Builder addEntryBuilder() {
        return getEntryFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.Robot.getDefaultInstance());
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Robot.Builder addEntryBuilder(
          int index) {
        return getEntryFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.Robot.getDefaultInstance());
      }
      /**
       * <code>repeated .Robot entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.Robot.Builder> 
           getEntryBuilderList() {
        return getEntryFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Robot, cn.wildfirechat.proto.WFCMessage.Robot.Builder, cn.wildfirechat.proto.WFCMessage.RobotOrBuilder> 
          getEntryFieldBuilder() {
        if (entryBuilder_ == null) {
          entryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.Robot, cn.wildfirechat.proto.WFCMessage.Robot.Builder, cn.wildfirechat.proto.WFCMessage.RobotOrBuilder>(
                  entry_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        return entryBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GetRobotsResult)
    }

    static {
      defaultInstance = new GetRobotsResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetRobotsResult)
  }

  public interface ThingOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string uid = 1;
    /**
     * <code>required string uid = 1;</code>
     */
    boolean hasUid();
    /**
     * <code>required string uid = 1;</code>
     */
    java.lang.String getUid();
    /**
     * <code>required string uid = 1;</code>
     */
    com.google.protobuf.ByteString
        getUidBytes();

    // required int32 state = 2;
    /**
     * <code>required int32 state = 2;</code>
     *
     * <pre>
     *0 normal; 1 deleted;
     * </pre>
     */
    boolean hasState();
    /**
     * <code>required int32 state = 2;</code>
     *
     * <pre>
     *0 normal; 1 deleted;
     * </pre>
     */
    int getState();

    // required string token = 3;
    /**
     * <code>required string token = 3;</code>
     */
    boolean hasToken();
    /**
     * <code>required string token = 3;</code>
     */
    java.lang.String getToken();
    /**
     * <code>required string token = 3;</code>
     */
    com.google.protobuf.ByteString
        getTokenBytes();

    // optional string owner = 4;
    /**
     * <code>optional string owner = 4;</code>
     */
    boolean hasOwner();
    /**
     * <code>optional string owner = 4;</code>
     */
    java.lang.String getOwner();
    /**
     * <code>optional string owner = 4;</code>
     */
    com.google.protobuf.ByteString
        getOwnerBytes();

    // optional string extra = 5;
    /**
     * <code>optional string extra = 5;</code>
     */
    boolean hasExtra();
    /**
     * <code>optional string extra = 5;</code>
     */
    java.lang.String getExtra();
    /**
     * <code>optional string extra = 5;</code>
     */
    com.google.protobuf.ByteString
        getExtraBytes();
  }
  /**
   * Protobuf type {@code Thing}
   */
  public static final class Thing extends
      com.google.protobuf.GeneratedMessage
      implements ThingOrBuilder {
    // Use Thing.newBuilder() to construct.
    private Thing(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Thing(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Thing defaultInstance;
    public static Thing getDefaultInstance() {
      return defaultInstance;
    }

    public Thing getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Thing(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              uid_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              state_ = input.readInt32();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              token_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              owner_ = input.readBytes();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              extra_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Thing_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Thing_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.Thing.class, cn.wildfirechat.proto.WFCMessage.Thing.Builder.class);
    }

    public static com.google.protobuf.Parser<Thing> PARSER =
        new com.google.protobuf.AbstractParser<Thing>() {
      public Thing parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Thing(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string uid = 1;
    public static final int UID_FIELD_NUMBER = 1;
    private java.lang.Object uid_;
    /**
     * <code>required string uid = 1;</code>
     */
    public boolean hasUid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public java.lang.String getUid() {
      java.lang.Object ref = uid_;
      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();
        if (bs.isValidUtf8()) {
          uid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUidBytes() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 state = 2;
    public static final int STATE_FIELD_NUMBER = 2;
    private int state_;
    /**
     * <code>required int32 state = 2;</code>
     *
     * <pre>
     *0 normal; 1 deleted;
     * </pre>
     */
    public boolean hasState() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 state = 2;</code>
     *
     * <pre>
     *0 normal; 1 deleted;
     * </pre>
     */
    public int getState() {
      return state_;
    }

    // required string token = 3;
    public static final int TOKEN_FIELD_NUMBER = 3;
    private java.lang.Object token_;
    /**
     * <code>required string token = 3;</code>
     */
    public boolean hasToken() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string token = 3;</code>
     */
    public java.lang.String getToken() {
      java.lang.Object ref = token_;
      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();
        if (bs.isValidUtf8()) {
          token_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string token = 3;</code>
     */
    public com.google.protobuf.ByteString
        getTokenBytes() {
      java.lang.Object ref = token_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        token_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string owner = 4;
    public static final int OWNER_FIELD_NUMBER = 4;
    private java.lang.Object owner_;
    /**
     * <code>optional string owner = 4;</code>
     */
    public boolean hasOwner() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string owner = 4;</code>
     */
    public java.lang.String getOwner() {
      java.lang.Object ref = owner_;
      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();
        if (bs.isValidUtf8()) {
          owner_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string owner = 4;</code>
     */
    public com.google.protobuf.ByteString
        getOwnerBytes() {
      java.lang.Object ref = owner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        owner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string extra = 5;
    public static final int EXTRA_FIELD_NUMBER = 5;
    private java.lang.Object extra_;
    /**
     * <code>optional string extra = 5;</code>
     */
    public boolean hasExtra() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional string extra = 5;</code>
     */
    public java.lang.String getExtra() {
      java.lang.Object ref = extra_;
      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();
        if (bs.isValidUtf8()) {
          extra_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string extra = 5;</code>
     */
    public com.google.protobuf.ByteString
        getExtraBytes() {
      java.lang.Object ref = extra_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        extra_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      uid_ = "";
      state_ = 0;
      token_ = "";
      owner_ = "";
      extra_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasState()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasToken()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, state_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getTokenBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getOwnerBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getExtraBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, state_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getTokenBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getOwnerBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getExtraBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.Thing parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Thing parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Thing parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Thing parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Thing parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Thing parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Thing parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Thing parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Thing parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Thing parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.Thing prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Thing}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ThingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Thing_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Thing_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.Thing.class, cn.wildfirechat.proto.WFCMessage.Thing.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.Thing.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        state_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        token_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        owner_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        extra_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Thing_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.Thing getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.Thing.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.Thing build() {
        cn.wildfirechat.proto.WFCMessage.Thing result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.Thing buildPartial() {
        cn.wildfirechat.proto.WFCMessage.Thing result = new cn.wildfirechat.proto.WFCMessage.Thing(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uid_ = uid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.state_ = state_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.token_ = token_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.owner_ = owner_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.extra_ = extra_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.Thing) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.Thing)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.Thing other) {
        if (other == cn.wildfirechat.proto.WFCMessage.Thing.getDefaultInstance()) return this;
        if (other.hasUid()) {
          bitField0_ |= 0x00000001;
          uid_ = other.uid_;
          onChanged();
        }
        if (other.hasState()) {
          setState(other.getState());
        }
        if (other.hasToken()) {
          bitField0_ |= 0x00000004;
          token_ = other.token_;
          onChanged();
        }
        if (other.hasOwner()) {
          bitField0_ |= 0x00000008;
          owner_ = other.owner_;
          onChanged();
        }
        if (other.hasExtra()) {
          bitField0_ |= 0x00000010;
          extra_ = other.extra_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUid()) {
          
          return false;
        }
        if (!hasState()) {
          
          return false;
        }
        if (!hasToken()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.Thing parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.Thing) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string uid = 1;
      private java.lang.Object uid_ = "";
      /**
       * <code>required string uid = 1;</code>
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public java.lang.String getUid() {
        java.lang.Object ref = uid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          uid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUidBytes() {
        java.lang.Object ref = uid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder clearUid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uid_ = getDefaultInstance().getUid();
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }

      // required int32 state = 2;
      private int state_ ;
      /**
       * <code>required int32 state = 2;</code>
       *
       * <pre>
       *0 normal; 1 deleted;
       * </pre>
       */
      public boolean hasState() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 state = 2;</code>
       *
       * <pre>
       *0 normal; 1 deleted;
       * </pre>
       */
      public int getState() {
        return state_;
      }
      /**
       * <code>required int32 state = 2;</code>
       *
       * <pre>
       *0 normal; 1 deleted;
       * </pre>
       */
      public Builder setState(int value) {
        bitField0_ |= 0x00000002;
        state_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 state = 2;</code>
       *
       * <pre>
       *0 normal; 1 deleted;
       * </pre>
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000002);
        state_ = 0;
        onChanged();
        return this;
      }

      // required string token = 3;
      private java.lang.Object token_ = "";
      /**
       * <code>required string token = 3;</code>
       */
      public boolean hasToken() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string token = 3;</code>
       */
      public java.lang.String getToken() {
        java.lang.Object ref = token_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          token_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string token = 3;</code>
       */
      public com.google.protobuf.ByteString
          getTokenBytes() {
        java.lang.Object ref = token_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          token_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string token = 3;</code>
       */
      public Builder setToken(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        token_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string token = 3;</code>
       */
      public Builder clearToken() {
        bitField0_ = (bitField0_ & ~0x00000004);
        token_ = getDefaultInstance().getToken();
        onChanged();
        return this;
      }
      /**
       * <code>required string token = 3;</code>
       */
      public Builder setTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        token_ = value;
        onChanged();
        return this;
      }

      // optional string owner = 4;
      private java.lang.Object owner_ = "";
      /**
       * <code>optional string owner = 4;</code>
       */
      public boolean hasOwner() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public java.lang.String getOwner() {
        java.lang.Object ref = owner_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          owner_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public com.google.protobuf.ByteString
          getOwnerBytes() {
        java.lang.Object ref = owner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          owner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public Builder setOwner(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        owner_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public Builder clearOwner() {
        bitField0_ = (bitField0_ & ~0x00000008);
        owner_ = getDefaultInstance().getOwner();
        onChanged();
        return this;
      }
      /**
       * <code>optional string owner = 4;</code>
       */
      public Builder setOwnerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        owner_ = value;
        onChanged();
        return this;
      }

      // optional string extra = 5;
      private java.lang.Object extra_ = "";
      /**
       * <code>optional string extra = 5;</code>
       */
      public boolean hasExtra() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional string extra = 5;</code>
       */
      public java.lang.String getExtra() {
        java.lang.Object ref = extra_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          extra_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string extra = 5;</code>
       */
      public com.google.protobuf.ByteString
          getExtraBytes() {
        java.lang.Object ref = extra_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          extra_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string extra = 5;</code>
       */
      public Builder setExtra(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        extra_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 5;</code>
       */
      public Builder clearExtra() {
        bitField0_ = (bitField0_ & ~0x00000010);
        extra_ = getDefaultInstance().getExtra();
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 5;</code>
       */
      public Builder setExtraBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        extra_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Thing)
    }

    static {
      defaultInstance = new Thing(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Thing)
  }

  public interface GetThingsResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .Thing entry = 1;
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.Thing> 
        getEntryList();
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.Thing getEntry(int index);
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    int getEntryCount();
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.ThingOrBuilder> 
        getEntryOrBuilderList();
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.ThingOrBuilder getEntryOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code GetThingsResult}
   */
  public static final class GetThingsResult extends
      com.google.protobuf.GeneratedMessage
      implements GetThingsResultOrBuilder {
    // Use GetThingsResult.newBuilder() to construct.
    private GetThingsResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetThingsResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetThingsResult defaultInstance;
    public static GetThingsResult getDefaultInstance() {
      return defaultInstance;
    }

    public GetThingsResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetThingsResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.Thing>();
                mutable_bitField0_ |= 0x00000001;
              }
              entry_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.Thing.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetThingsResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetThingsResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GetThingsResult.class, cn.wildfirechat.proto.WFCMessage.GetThingsResult.Builder.class);
    }

    public static com.google.protobuf.Parser<GetThingsResult> PARSER =
        new com.google.protobuf.AbstractParser<GetThingsResult>() {
      public GetThingsResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetThingsResult(input, extensionRegistry);
      }
    };

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

    // repeated .Thing entry = 1;
    public static final int ENTRY_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.Thing> entry_;
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.Thing> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.ThingOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.Thing getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .Thing entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.ThingOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    private void initFields() {
      entry_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getEntryCount(); i++) {
        if (!getEntry(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < entry_.size(); i++) {
        output.writeMessage(1, entry_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < entry_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, entry_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetThingsResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GetThingsResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetThingsResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GetThingsResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetThingsResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetThingsResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GetThingsResult.class, cn.wildfirechat.proto.WFCMessage.GetThingsResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GetThingsResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getEntryFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          entryBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetThingsResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GetThingsResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GetThingsResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GetThingsResult build() {
        cn.wildfirechat.proto.WFCMessage.GetThingsResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GetThingsResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GetThingsResult result = new cn.wildfirechat.proto.WFCMessage.GetThingsResult(this);
        int from_bitField0_ = bitField0_;
        if (entryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            entry_ = java.util.Collections.unmodifiableList(entry_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.entry_ = entry_;
        } else {
          result.entry_ = entryBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GetThingsResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GetThingsResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GetThingsResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GetThingsResult.getDefaultInstance()) return this;
        if (entryBuilder_ == null) {
          if (!other.entry_.isEmpty()) {
            if (entry_.isEmpty()) {
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEntryIsMutable();
              entry_.addAll(other.entry_);
            }
            onChanged();
          }
        } else {
          if (!other.entry_.isEmpty()) {
            if (entryBuilder_.isEmpty()) {
              entryBuilder_.dispose();
              entryBuilder_ = null;
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
              entryBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEntryFieldBuilder() : null;
            } else {
              entryBuilder_.addAllMessages(other.entry_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GetThingsResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GetThingsResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .Thing entry = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.Thing> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.Thing>(entry_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Thing, cn.wildfirechat.proto.WFCMessage.Thing.Builder, cn.wildfirechat.proto.WFCMessage.ThingOrBuilder> entryBuilder_;

      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.Thing> getEntryList() {
        if (entryBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entry_);
        } else {
          return entryBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public int getEntryCount() {
        if (entryBuilder_ == null) {
          return entry_.size();
        } else {
          return entryBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Thing getEntry(int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);
        } else {
          return entryBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Thing value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.set(index, value);
          onChanged();
        } else {
          entryBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Thing.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.set(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public Builder addEntry(cn.wildfirechat.proto.WFCMessage.Thing value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(value);
          onChanged();
        } else {
          entryBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Thing value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(index, value);
          onChanged();
        } else {
          entryBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public Builder addEntry(
          cn.wildfirechat.proto.WFCMessage.Thing.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Thing.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.Thing> values) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          super.addAll(values, entry_);
          onChanged();
        } else {
          entryBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public Builder clearEntry() {
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          entryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public Builder removeEntry(int index) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.remove(index);
          onChanged();
        } else {
          entryBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Thing.Builder getEntryBuilder(
          int index) {
        return getEntryFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.ThingOrBuilder getEntryOrBuilder(
          int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);  } else {
          return entryBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.ThingOrBuilder> 
           getEntryOrBuilderList() {
        if (entryBuilder_ != null) {
          return entryBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entry_);
        }
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Thing.Builder addEntryBuilder() {
        return getEntryFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.Thing.getDefaultInstance());
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Thing.Builder addEntryBuilder(
          int index) {
        return getEntryFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.Thing.getDefaultInstance());
      }
      /**
       * <code>repeated .Thing entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.Thing.Builder> 
           getEntryBuilderList() {
        return getEntryFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Thing, cn.wildfirechat.proto.WFCMessage.Thing.Builder, cn.wildfirechat.proto.WFCMessage.ThingOrBuilder> 
          getEntryFieldBuilder() {
        if (entryBuilder_ == null) {
          entryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.Thing, cn.wildfirechat.proto.WFCMessage.Thing.Builder, cn.wildfirechat.proto.WFCMessage.ThingOrBuilder>(
                  entry_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        return entryBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GetThingsResult)
    }

    static {
      defaultInstance = new GetThingsResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetThingsResult)
  }

  public interface UploadDeviceTokenRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 platform = 1;
    /**
     * <code>required int32 platform = 1;</code>
     */
    boolean hasPlatform();
    /**
     * <code>required int32 platform = 1;</code>
     */
    int getPlatform();

    // required string app_name = 2;
    /**
     * <code>required string app_name = 2;</code>
     */
    boolean hasAppName();
    /**
     * <code>required string app_name = 2;</code>
     */
    java.lang.String getAppName();
    /**
     * <code>required string app_name = 2;</code>
     */
    com.google.protobuf.ByteString
        getAppNameBytes();

    // required string device_token = 3;
    /**
     * <code>required string device_token = 3;</code>
     */
    boolean hasDeviceToken();
    /**
     * <code>required string device_token = 3;</code>
     */
    java.lang.String getDeviceToken();
    /**
     * <code>required string device_token = 3;</code>
     */
    com.google.protobuf.ByteString
        getDeviceTokenBytes();

    // required int32 push_type = 4;
    /**
     * <code>required int32 push_type = 4;</code>
     */
    boolean hasPushType();
    /**
     * <code>required int32 push_type = 4;</code>
     */
    int getPushType();
  }
  /**
   * Protobuf type {@code UploadDeviceTokenRequest}
   */
  public static final class UploadDeviceTokenRequest extends
      com.google.protobuf.GeneratedMessage
      implements UploadDeviceTokenRequestOrBuilder {
    // Use UploadDeviceTokenRequest.newBuilder() to construct.
    private UploadDeviceTokenRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private UploadDeviceTokenRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final UploadDeviceTokenRequest defaultInstance;
    public static UploadDeviceTokenRequest getDefaultInstance() {
      return defaultInstance;
    }

    public UploadDeviceTokenRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private UploadDeviceTokenRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              platform_ = input.readInt32();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              appName_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              deviceToken_ = input.readBytes();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              pushType_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_UploadDeviceTokenRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_UploadDeviceTokenRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest.class, cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<UploadDeviceTokenRequest> PARSER =
        new com.google.protobuf.AbstractParser<UploadDeviceTokenRequest>() {
      public UploadDeviceTokenRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UploadDeviceTokenRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int32 platform = 1;
    public static final int PLATFORM_FIELD_NUMBER = 1;
    private int platform_;
    /**
     * <code>required int32 platform = 1;</code>
     */
    public boolean hasPlatform() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 platform = 1;</code>
     */
    public int getPlatform() {
      return platform_;
    }

    // required string app_name = 2;
    public static final int APP_NAME_FIELD_NUMBER = 2;
    private java.lang.Object appName_;
    /**
     * <code>required string app_name = 2;</code>
     */
    public boolean hasAppName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string app_name = 2;</code>
     */
    public java.lang.String getAppName() {
      java.lang.Object ref = appName_;
      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();
        if (bs.isValidUtf8()) {
          appName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string app_name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getAppNameBytes() {
      java.lang.Object ref = appName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        appName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string device_token = 3;
    public static final int DEVICE_TOKEN_FIELD_NUMBER = 3;
    private java.lang.Object deviceToken_;
    /**
     * <code>required string device_token = 3;</code>
     */
    public boolean hasDeviceToken() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string device_token = 3;</code>
     */
    public java.lang.String getDeviceToken() {
      java.lang.Object ref = deviceToken_;
      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();
        if (bs.isValidUtf8()) {
          deviceToken_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string device_token = 3;</code>
     */
    public com.google.protobuf.ByteString
        getDeviceTokenBytes() {
      java.lang.Object ref = deviceToken_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deviceToken_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 push_type = 4;
    public static final int PUSH_TYPE_FIELD_NUMBER = 4;
    private int pushType_;
    /**
     * <code>required int32 push_type = 4;</code>
     */
    public boolean hasPushType() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required int32 push_type = 4;</code>
     */
    public int getPushType() {
      return pushType_;
    }

    private void initFields() {
      platform_ = 0;
      appName_ = "";
      deviceToken_ = "";
      pushType_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasPlatform()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAppName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDeviceToken()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPushType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, platform_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getAppNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getDeviceTokenBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, pushType_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, platform_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getAppNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getDeviceTokenBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, pushType_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UploadDeviceTokenRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UploadDeviceTokenRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UploadDeviceTokenRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest.class, cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        platform_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        appName_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        deviceToken_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        pushType_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UploadDeviceTokenRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest build() {
        cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest result = new cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.platform_ = platform_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.appName_ = appName_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.deviceToken_ = deviceToken_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.pushType_ = pushType_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest.getDefaultInstance()) return this;
        if (other.hasPlatform()) {
          setPlatform(other.getPlatform());
        }
        if (other.hasAppName()) {
          bitField0_ |= 0x00000002;
          appName_ = other.appName_;
          onChanged();
        }
        if (other.hasDeviceToken()) {
          bitField0_ |= 0x00000004;
          deviceToken_ = other.deviceToken_;
          onChanged();
        }
        if (other.hasPushType()) {
          setPushType(other.getPushType());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasPlatform()) {
          
          return false;
        }
        if (!hasAppName()) {
          
          return false;
        }
        if (!hasDeviceToken()) {
          
          return false;
        }
        if (!hasPushType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.UploadDeviceTokenRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 platform = 1;
      private int platform_ ;
      /**
       * <code>required int32 platform = 1;</code>
       */
      public boolean hasPlatform() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 platform = 1;</code>
       */
      public int getPlatform() {
        return platform_;
      }
      /**
       * <code>required int32 platform = 1;</code>
       */
      public Builder setPlatform(int value) {
        bitField0_ |= 0x00000001;
        platform_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 platform = 1;</code>
       */
      public Builder clearPlatform() {
        bitField0_ = (bitField0_ & ~0x00000001);
        platform_ = 0;
        onChanged();
        return this;
      }

      // required string app_name = 2;
      private java.lang.Object appName_ = "";
      /**
       * <code>required string app_name = 2;</code>
       */
      public boolean hasAppName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string app_name = 2;</code>
       */
      public java.lang.String getAppName() {
        java.lang.Object ref = appName_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          appName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string app_name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getAppNameBytes() {
        java.lang.Object ref = appName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          appName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string app_name = 2;</code>
       */
      public Builder setAppName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        appName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string app_name = 2;</code>
       */
      public Builder clearAppName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        appName_ = getDefaultInstance().getAppName();
        onChanged();
        return this;
      }
      /**
       * <code>required string app_name = 2;</code>
       */
      public Builder setAppNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        appName_ = value;
        onChanged();
        return this;
      }

      // required string device_token = 3;
      private java.lang.Object deviceToken_ = "";
      /**
       * <code>required string device_token = 3;</code>
       */
      public boolean hasDeviceToken() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string device_token = 3;</code>
       */
      public java.lang.String getDeviceToken() {
        java.lang.Object ref = deviceToken_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          deviceToken_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string device_token = 3;</code>
       */
      public com.google.protobuf.ByteString
          getDeviceTokenBytes() {
        java.lang.Object ref = deviceToken_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deviceToken_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string device_token = 3;</code>
       */
      public Builder setDeviceToken(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        deviceToken_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string device_token = 3;</code>
       */
      public Builder clearDeviceToken() {
        bitField0_ = (bitField0_ & ~0x00000004);
        deviceToken_ = getDefaultInstance().getDeviceToken();
        onChanged();
        return this;
      }
      /**
       * <code>required string device_token = 3;</code>
       */
      public Builder setDeviceTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        deviceToken_ = value;
        onChanged();
        return this;
      }

      // required int32 push_type = 4;
      private int pushType_ ;
      /**
       * <code>required int32 push_type = 4;</code>
       */
      public boolean hasPushType() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required int32 push_type = 4;</code>
       */
      public int getPushType() {
        return pushType_;
      }
      /**
       * <code>required int32 push_type = 4;</code>
       */
      public Builder setPushType(int value) {
        bitField0_ |= 0x00000008;
        pushType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 push_type = 4;</code>
       */
      public Builder clearPushType() {
        bitField0_ = (bitField0_ & ~0x00000008);
        pushType_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:UploadDeviceTokenRequest)
    }

    static {
      defaultInstance = new UploadDeviceTokenRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:UploadDeviceTokenRequest)
  }

  public interface ModifyGroupInfoRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string group_id = 1;
    /**
     * <code>required string group_id = 1;</code>
     */
    boolean hasGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    java.lang.String getGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();

    // required int32 type = 2;
    /**
     * <code>required int32 type = 2;</code>
     */
    boolean hasType();
    /**
     * <code>required int32 type = 2;</code>
     */
    int getType();

    // required string value = 3;
    /**
     * <code>required string value = 3;</code>
     */
    boolean hasValue();
    /**
     * <code>required string value = 3;</code>
     */
    java.lang.String getValue();
    /**
     * <code>required string value = 3;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();

    // repeated int32 to_line = 4;
    /**
     * <code>repeated int32 to_line = 4;</code>
     */
    java.util.List<java.lang.Integer> getToLineList();
    /**
     * <code>repeated int32 to_line = 4;</code>
     */
    int getToLineCount();
    /**
     * <code>repeated int32 to_line = 4;</code>
     */
    int getToLine(int index);

    // optional .MessageContent notify_content = 5;
    /**
     * <code>optional .MessageContent notify_content = 5;</code>
     */
    boolean hasNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 5;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 5;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder();
  }
  /**
   * Protobuf type {@code ModifyGroupInfoRequest}
   */
  public static final class ModifyGroupInfoRequest extends
      com.google.protobuf.GeneratedMessage
      implements ModifyGroupInfoRequestOrBuilder {
    // Use ModifyGroupInfoRequest.newBuilder() to construct.
    private ModifyGroupInfoRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ModifyGroupInfoRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ModifyGroupInfoRequest defaultInstance;
    public static ModifyGroupInfoRequest getDefaultInstance() {
      return defaultInstance;
    }

    public ModifyGroupInfoRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ModifyGroupInfoRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              groupId_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              type_ = input.readInt32();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              value_ = input.readBytes();
              break;
            }
            case 32: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              toLine_.add(input.readInt32());
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              while (input.getBytesUntilLimit() > 0) {
                toLine_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 42: {
              cn.wildfirechat.proto.WFCMessage.MessageContent.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = notifyContent_.toBuilder();
              }
              notifyContent_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.MessageContent.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(notifyContent_);
                notifyContent_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupInfoRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupInfoRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest.class, cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<ModifyGroupInfoRequest> PARSER =
        new com.google.protobuf.AbstractParser<ModifyGroupInfoRequest>() {
      public ModifyGroupInfoRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ModifyGroupInfoRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string group_id = 1;
    public static final int GROUP_ID_FIELD_NUMBER = 1;
    private java.lang.Object groupId_;
    /**
     * <code>required string group_id = 1;</code>
     */
    public boolean hasGroupId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public java.lang.String getGroupId() {
      java.lang.Object ref = groupId_;
      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();
        if (bs.isValidUtf8()) {
          groupId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 type = 2;
    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_;
    /**
     * <code>required int32 type = 2;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 type = 2;</code>
     */
    public int getType() {
      return type_;
    }

    // required string value = 3;
    public static final int VALUE_FIELD_NUMBER = 3;
    private java.lang.Object value_;
    /**
     * <code>required string value = 3;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string value = 3;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      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();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string value = 3;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated int32 to_line = 4;
    public static final int TO_LINE_FIELD_NUMBER = 4;
    private java.util.List<java.lang.Integer> toLine_;
    /**
     * <code>repeated int32 to_line = 4;</code>
     */
    public java.util.List<java.lang.Integer>
        getToLineList() {
      return toLine_;
    }
    /**
     * <code>repeated int32 to_line = 4;</code>
     */
    public int getToLineCount() {
      return toLine_.size();
    }
    /**
     * <code>repeated int32 to_line = 4;</code>
     */
    public int getToLine(int index) {
      return toLine_.get(index);
    }

    // optional .MessageContent notify_content = 5;
    public static final int NOTIFY_CONTENT_FIELD_NUMBER = 5;
    private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_;
    /**
     * <code>optional .MessageContent notify_content = 5;</code>
     */
    public boolean hasNotifyContent() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .MessageContent notify_content = 5;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
      return notifyContent_;
    }
    /**
     * <code>optional .MessageContent notify_content = 5;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
      return notifyContent_;
    }

    private void initFields() {
      groupId_ = "";
      type_ = 0;
      value_ = "";
      toLine_ = java.util.Collections.emptyList();
      notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasGroupId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasNotifyContent()) {
        if (!getNotifyContent().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getGroupIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getValueBytes());
      }
      for (int i = 0; i < toLine_.size(); i++) {
        output.writeInt32(4, toLine_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(5, notifyContent_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getGroupIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getValueBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < toLine_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(toLine_.get(i));
        }
        size += dataSize;
        size += 1 * getToLineList().size();
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, notifyContent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ModifyGroupInfoRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupInfoRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupInfoRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest.class, cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getNotifyContentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        groupId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupInfoRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest build() {
        cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest result = new cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.groupId_ = groupId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.value_ = value_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.toLine_ = toLine_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        if (notifyContentBuilder_ == null) {
          result.notifyContent_ = notifyContent_;
        } else {
          result.notifyContent_ = notifyContentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest.getDefaultInstance()) return this;
        if (other.hasGroupId()) {
          bitField0_ |= 0x00000001;
          groupId_ = other.groupId_;
          onChanged();
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000004;
          value_ = other.value_;
          onChanged();
        }
        if (!other.toLine_.isEmpty()) {
          if (toLine_.isEmpty()) {
            toLine_ = other.toLine_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureToLineIsMutable();
            toLine_.addAll(other.toLine_);
          }
          onChanged();
        }
        if (other.hasNotifyContent()) {
          mergeNotifyContent(other.getNotifyContent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasGroupId()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        if (hasNotifyContent()) {
          if (!getNotifyContent().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ModifyGroupInfoRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string group_id = 1;
      private java.lang.Object groupId_ = "";
      /**
       * <code>required string group_id = 1;</code>
       */
      public boolean hasGroupId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder clearGroupId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        groupId_ = getDefaultInstance().getGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }

      // required int32 type = 2;
      private int type_ ;
      /**
       * <code>required int32 type = 2;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 type = 2;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>required int32 type = 2;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000002;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 type = 2;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = 0;
        onChanged();
        return this;
      }

      // required string value = 3;
      private java.lang.Object value_ = "";
      /**
       * <code>required string value = 3;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string value = 3;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string value = 3;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000004);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }

      // repeated int32 to_line = 4;
      private java.util.List<java.lang.Integer> toLine_ = java.util.Collections.emptyList();
      private void ensureToLineIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          toLine_ = new java.util.ArrayList<java.lang.Integer>(toLine_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated int32 to_line = 4;</code>
       */
      public java.util.List<java.lang.Integer>
          getToLineList() {
        return java.util.Collections.unmodifiableList(toLine_);
      }
      /**
       * <code>repeated int32 to_line = 4;</code>
       */
      public int getToLineCount() {
        return toLine_.size();
      }
      /**
       * <code>repeated int32 to_line = 4;</code>
       */
      public int getToLine(int index) {
        return toLine_.get(index);
      }
      /**
       * <code>repeated int32 to_line = 4;</code>
       */
      public Builder setToLine(
          int index, int value) {
        ensureToLineIsMutable();
        toLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 4;</code>
       */
      public Builder addToLine(int value) {
        ensureToLineIsMutable();
        toLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 4;</code>
       */
      public Builder addAllToLine(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureToLineIsMutable();
        super.addAll(values, toLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 4;</code>
       */
      public Builder clearToLine() {
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      // optional .MessageContent notify_content = 5;
      private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> notifyContentBuilder_;
      /**
       * <code>optional .MessageContent notify_content = 5;</code>
       */
      public boolean hasNotifyContent() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .MessageContent notify_content = 5;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
        if (notifyContentBuilder_ == null) {
          return notifyContent_;
        } else {
          return notifyContentBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 5;</code>
       */
      public Builder setNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          notifyContent_ = value;
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 5;</code>
       */
      public Builder setNotifyContent(
          cn.wildfirechat.proto.WFCMessage.MessageContent.Builder builderForValue) {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = builderForValue.build();
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 5;</code>
       */
      public Builder mergeNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              notifyContent_ != cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) {
            notifyContent_ =
              cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder(notifyContent_).mergeFrom(value).buildPartial();
          } else {
            notifyContent_ = value;
          }
          onChanged();
        } else {
          notifyContentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 5;</code>
       */
      public Builder clearNotifyContent() {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
          onChanged();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 5;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent.Builder getNotifyContentBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getNotifyContentFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .MessageContent notify_content = 5;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
        if (notifyContentBuilder_ != null) {
          return notifyContentBuilder_.getMessageOrBuilder();
        } else {
          return notifyContent_;
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> 
          getNotifyContentFieldBuilder() {
        if (notifyContentBuilder_ == null) {
          notifyContentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder>(
                  notifyContent_,
                  getParentForChildren(),
                  isClean());
          notifyContent_ = null;
        }
        return notifyContentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:ModifyGroupInfoRequest)
    }

    static {
      defaultInstance = new ModifyGroupInfoRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ModifyGroupInfoRequest)
  }

  public interface InfoEntryOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 type = 1;
    /**
     * <code>required int32 type = 1;</code>
     */
    boolean hasType();
    /**
     * <code>required int32 type = 1;</code>
     */
    int getType();

    // required string value = 2;
    /**
     * <code>required string value = 2;</code>
     */
    boolean hasValue();
    /**
     * <code>required string value = 2;</code>
     */
    java.lang.String getValue();
    /**
     * <code>required string value = 2;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code InfoEntry}
   */
  public static final class InfoEntry extends
      com.google.protobuf.GeneratedMessage
      implements InfoEntryOrBuilder {
    // Use InfoEntry.newBuilder() to construct.
    private InfoEntry(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private InfoEntry(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final InfoEntry defaultInstance;
    public static InfoEntry getDefaultInstance() {
      return defaultInstance;
    }

    public InfoEntry getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private InfoEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              type_ = input.readInt32();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              value_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_InfoEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_InfoEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.InfoEntry.class, cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder.class);
    }

    public static com.google.protobuf.Parser<InfoEntry> PARSER =
        new com.google.protobuf.AbstractParser<InfoEntry>() {
      public InfoEntry parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new InfoEntry(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int32 type = 1;
    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_;
    /**
     * <code>required int32 type = 1;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 type = 1;</code>
     */
    public int getType() {
      return type_;
    }

    // required string value = 2;
    public static final int VALUE_FIELD_NUMBER = 2;
    private java.lang.Object value_;
    /**
     * <code>required string value = 2;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string value = 2;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      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();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string value = 2;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      type_ = 0;
      value_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getValueBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getValueBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.InfoEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.InfoEntry prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code InfoEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_InfoEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_InfoEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.InfoEntry.class, cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.InfoEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_InfoEntry_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.InfoEntry getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.InfoEntry.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.InfoEntry build() {
        cn.wildfirechat.proto.WFCMessage.InfoEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.InfoEntry buildPartial() {
        cn.wildfirechat.proto.WFCMessage.InfoEntry result = new cn.wildfirechat.proto.WFCMessage.InfoEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.InfoEntry) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.InfoEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.InfoEntry other) {
        if (other == cn.wildfirechat.proto.WFCMessage.InfoEntry.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000002;
          value_ = other.value_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasType()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.InfoEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.InfoEntry) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 type = 1;
      private int type_ ;
      /**
       * <code>required int32 type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000001;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        onChanged();
        return this;
      }

      // required string value = 2;
      private java.lang.Object value_ = "";
      /**
       * <code>required string value = 2;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string value = 2;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string value = 2;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:InfoEntry)
    }

    static {
      defaultInstance = new InfoEntry(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:InfoEntry)
  }

  public interface ModifyMyInfoRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .InfoEntry entry = 1;
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.InfoEntry> 
        getEntryList();
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.InfoEntry getEntry(int index);
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    int getEntryCount();
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder> 
        getEntryOrBuilderList();
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder getEntryOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code ModifyMyInfoRequest}
   */
  public static final class ModifyMyInfoRequest extends
      com.google.protobuf.GeneratedMessage
      implements ModifyMyInfoRequestOrBuilder {
    // Use ModifyMyInfoRequest.newBuilder() to construct.
    private ModifyMyInfoRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ModifyMyInfoRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ModifyMyInfoRequest defaultInstance;
    public static ModifyMyInfoRequest getDefaultInstance() {
      return defaultInstance;
    }

    public ModifyMyInfoRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ModifyMyInfoRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.InfoEntry>();
                mutable_bitField0_ |= 0x00000001;
              }
              entry_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.InfoEntry.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyMyInfoRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyMyInfoRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest.class, cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<ModifyMyInfoRequest> PARSER =
        new com.google.protobuf.AbstractParser<ModifyMyInfoRequest>() {
      public ModifyMyInfoRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ModifyMyInfoRequest(input, extensionRegistry);
      }
    };

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

    // repeated .InfoEntry entry = 1;
    public static final int ENTRY_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.InfoEntry> entry_;
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.InfoEntry> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.InfoEntry getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .InfoEntry entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    private void initFields() {
      entry_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getEntryCount(); i++) {
        if (!getEntry(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < entry_.size(); i++) {
        output.writeMessage(1, entry_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < entry_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, entry_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ModifyMyInfoRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyMyInfoRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyMyInfoRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest.class, cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getEntryFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          entryBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyMyInfoRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest build() {
        cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest result = new cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest(this);
        int from_bitField0_ = bitField0_;
        if (entryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            entry_ = java.util.Collections.unmodifiableList(entry_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.entry_ = entry_;
        } else {
          result.entry_ = entryBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest.getDefaultInstance()) return this;
        if (entryBuilder_ == null) {
          if (!other.entry_.isEmpty()) {
            if (entry_.isEmpty()) {
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEntryIsMutable();
              entry_.addAll(other.entry_);
            }
            onChanged();
          }
        } else {
          if (!other.entry_.isEmpty()) {
            if (entryBuilder_.isEmpty()) {
              entryBuilder_.dispose();
              entryBuilder_ = null;
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
              entryBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEntryFieldBuilder() : null;
            } else {
              entryBuilder_.addAllMessages(other.entry_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ModifyMyInfoRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .InfoEntry entry = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.InfoEntry> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.InfoEntry>(entry_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.InfoEntry, cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder, cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder> entryBuilder_;

      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.InfoEntry> getEntryList() {
        if (entryBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entry_);
        } else {
          return entryBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public int getEntryCount() {
        if (entryBuilder_ == null) {
          return entry_.size();
        } else {
          return entryBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.InfoEntry getEntry(int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);
        } else {
          return entryBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.InfoEntry value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.set(index, value);
          onChanged();
        } else {
          entryBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.set(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public Builder addEntry(cn.wildfirechat.proto.WFCMessage.InfoEntry value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(value);
          onChanged();
        } else {
          entryBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.InfoEntry value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(index, value);
          onChanged();
        } else {
          entryBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public Builder addEntry(
          cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.InfoEntry> values) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          super.addAll(values, entry_);
          onChanged();
        } else {
          entryBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public Builder clearEntry() {
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          entryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public Builder removeEntry(int index) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.remove(index);
          onChanged();
        } else {
          entryBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder getEntryBuilder(
          int index) {
        return getEntryFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder getEntryOrBuilder(
          int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);  } else {
          return entryBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder> 
           getEntryOrBuilderList() {
        if (entryBuilder_ != null) {
          return entryBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entry_);
        }
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder addEntryBuilder() {
        return getEntryFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.InfoEntry.getDefaultInstance());
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder addEntryBuilder(
          int index) {
        return getEntryFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.InfoEntry.getDefaultInstance());
      }
      /**
       * <code>repeated .InfoEntry entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder> 
           getEntryBuilderList() {
        return getEntryFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.InfoEntry, cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder, cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder> 
          getEntryFieldBuilder() {
        if (entryBuilder_ == null) {
          entryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.InfoEntry, cn.wildfirechat.proto.WFCMessage.InfoEntry.Builder, cn.wildfirechat.proto.WFCMessage.InfoEntryOrBuilder>(
                  entry_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        return entryBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:ModifyMyInfoRequest)
    }

    static {
      defaultInstance = new ModifyMyInfoRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ModifyMyInfoRequest)
  }

  public interface NotifyMessageOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 type = 1;
    /**
     * <code>required int32 type = 1;</code>
     */
    boolean hasType();
    /**
     * <code>required int32 type = 1;</code>
     */
    int getType();

    // required int64 head = 2;
    /**
     * <code>required int64 head = 2;</code>
     */
    boolean hasHead();
    /**
     * <code>required int64 head = 2;</code>
     */
    long getHead();

    // optional string target = 3;
    /**
     * <code>optional string target = 3;</code>
     */
    boolean hasTarget();
    /**
     * <code>optional string target = 3;</code>
     */
    java.lang.String getTarget();
    /**
     * <code>optional string target = 3;</code>
     */
    com.google.protobuf.ByteString
        getTargetBytes();
  }
  /**
   * Protobuf type {@code NotifyMessage}
   */
  public static final class NotifyMessage extends
      com.google.protobuf.GeneratedMessage
      implements NotifyMessageOrBuilder {
    // Use NotifyMessage.newBuilder() to construct.
    private NotifyMessage(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private NotifyMessage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final NotifyMessage defaultInstance;
    public static NotifyMessage getDefaultInstance() {
      return defaultInstance;
    }

    public NotifyMessage getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private NotifyMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              type_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              head_ = input.readInt64();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              target_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyMessage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.NotifyMessage.class, cn.wildfirechat.proto.WFCMessage.NotifyMessage.Builder.class);
    }

    public static com.google.protobuf.Parser<NotifyMessage> PARSER =
        new com.google.protobuf.AbstractParser<NotifyMessage>() {
      public NotifyMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NotifyMessage(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int32 type = 1;
    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_;
    /**
     * <code>required int32 type = 1;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 type = 1;</code>
     */
    public int getType() {
      return type_;
    }

    // required int64 head = 2;
    public static final int HEAD_FIELD_NUMBER = 2;
    private long head_;
    /**
     * <code>required int64 head = 2;</code>
     */
    public boolean hasHead() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int64 head = 2;</code>
     */
    public long getHead() {
      return head_;
    }

    // optional string target = 3;
    public static final int TARGET_FIELD_NUMBER = 3;
    private java.lang.Object target_;
    /**
     * <code>optional string target = 3;</code>
     */
    public boolean hasTarget() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string target = 3;</code>
     */
    public java.lang.String getTarget() {
      java.lang.Object ref = target_;
      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();
        if (bs.isValidUtf8()) {
          target_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string target = 3;</code>
     */
    public com.google.protobuf.ByteString
        getTargetBytes() {
      java.lang.Object ref = target_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        target_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      type_ = 0;
      head_ = 0L;
      target_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasHead()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, head_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getTargetBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, head_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getTargetBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.NotifyMessage prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code NotifyMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.NotifyMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyMessage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.NotifyMessage.class, cn.wildfirechat.proto.WFCMessage.NotifyMessage.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.NotifyMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        head_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        target_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyMessage_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.NotifyMessage getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.NotifyMessage.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.NotifyMessage build() {
        cn.wildfirechat.proto.WFCMessage.NotifyMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.NotifyMessage buildPartial() {
        cn.wildfirechat.proto.WFCMessage.NotifyMessage result = new cn.wildfirechat.proto.WFCMessage.NotifyMessage(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.head_ = head_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.target_ = target_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.NotifyMessage) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.NotifyMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.NotifyMessage other) {
        if (other == cn.wildfirechat.proto.WFCMessage.NotifyMessage.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasHead()) {
          setHead(other.getHead());
        }
        if (other.hasTarget()) {
          bitField0_ |= 0x00000004;
          target_ = other.target_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasType()) {
          
          return false;
        }
        if (!hasHead()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.NotifyMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.NotifyMessage) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 type = 1;
      private int type_ ;
      /**
       * <code>required int32 type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000001;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        onChanged();
        return this;
      }

      // required int64 head = 2;
      private long head_ ;
      /**
       * <code>required int64 head = 2;</code>
       */
      public boolean hasHead() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int64 head = 2;</code>
       */
      public long getHead() {
        return head_;
      }
      /**
       * <code>required int64 head = 2;</code>
       */
      public Builder setHead(long value) {
        bitField0_ |= 0x00000002;
        head_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 head = 2;</code>
       */
      public Builder clearHead() {
        bitField0_ = (bitField0_ & ~0x00000002);
        head_ = 0L;
        onChanged();
        return this;
      }

      // optional string target = 3;
      private java.lang.Object target_ = "";
      /**
       * <code>optional string target = 3;</code>
       */
      public boolean hasTarget() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string target = 3;</code>
       */
      public java.lang.String getTarget() {
        java.lang.Object ref = target_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          target_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string target = 3;</code>
       */
      public com.google.protobuf.ByteString
          getTargetBytes() {
        java.lang.Object ref = target_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          target_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string target = 3;</code>
       */
      public Builder setTarget(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        target_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string target = 3;</code>
       */
      public Builder clearTarget() {
        bitField0_ = (bitField0_ & ~0x00000004);
        target_ = getDefaultInstance().getTarget();
        onChanged();
        return this;
      }
      /**
       * <code>optional string target = 3;</code>
       */
      public Builder setTargetBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        target_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:NotifyMessage)
    }

    static {
      defaultInstance = new NotifyMessage(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:NotifyMessage)
  }

  public interface PullMessageRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int64 id = 1;
    /**
     * <code>required int64 id = 1;</code>
     */
    boolean hasId();
    /**
     * <code>required int64 id = 1;</code>
     */
    long getId();

    // required int32 type = 2;
    /**
     * <code>required int32 type = 2;</code>
     */
    boolean hasType();
    /**
     * <code>required int32 type = 2;</code>
     */
    int getType();

    // optional int64 delay = 3;
    /**
     * <code>optional int64 delay = 3;</code>
     */
    boolean hasDelay();
    /**
     * <code>optional int64 delay = 3;</code>
     */
    long getDelay();
  }
  /**
   * Protobuf type {@code PullMessageRequest}
   */
  public static final class PullMessageRequest extends
      com.google.protobuf.GeneratedMessage
      implements PullMessageRequestOrBuilder {
    // Use PullMessageRequest.newBuilder() to construct.
    private PullMessageRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullMessageRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullMessageRequest defaultInstance;
    public static PullMessageRequest getDefaultInstance() {
      return defaultInstance;
    }

    public PullMessageRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullMessageRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              id_ = input.readInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              type_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              delay_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullMessageRequest.class, cn.wildfirechat.proto.WFCMessage.PullMessageRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<PullMessageRequest> PARSER =
        new com.google.protobuf.AbstractParser<PullMessageRequest>() {
      public PullMessageRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullMessageRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int64 id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private long id_;
    /**
     * <code>required int64 id = 1;</code>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int64 id = 1;</code>
     */
    public long getId() {
      return id_;
    }

    // required int32 type = 2;
    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_;
    /**
     * <code>required int32 type = 2;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 type = 2;</code>
     */
    public int getType() {
      return type_;
    }

    // optional int64 delay = 3;
    public static final int DELAY_FIELD_NUMBER = 3;
    private long delay_;
    /**
     * <code>optional int64 delay = 3;</code>
     */
    public boolean hasDelay() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int64 delay = 3;</code>
     */
    public long getDelay() {
      return delay_;
    }

    private void initFields() {
      id_ = 0L;
      type_ = 0;
      delay_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt64(3, delay_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, delay_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullMessageRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullMessageRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullMessageRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullMessageRequest.class, cn.wildfirechat.proto.WFCMessage.PullMessageRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullMessageRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        id_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        delay_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullMessageRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullMessageRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullMessageRequest build() {
        cn.wildfirechat.proto.WFCMessage.PullMessageRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullMessageRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullMessageRequest result = new cn.wildfirechat.proto.WFCMessage.PullMessageRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.id_ = id_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.delay_ = delay_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullMessageRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullMessageRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullMessageRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullMessageRequest.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasDelay()) {
          setDelay(other.getDelay());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasId()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullMessageRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullMessageRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int64 id = 1;
      private long id_ ;
      /**
       * <code>required int64 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int64 id = 1;</code>
       */
      public long getId() {
        return id_;
      }
      /**
       * <code>required int64 id = 1;</code>
       */
      public Builder setId(long value) {
        bitField0_ |= 0x00000001;
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 id = 1;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0L;
        onChanged();
        return this;
      }

      // required int32 type = 2;
      private int type_ ;
      /**
       * <code>required int32 type = 2;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 type = 2;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>required int32 type = 2;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000002;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 type = 2;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = 0;
        onChanged();
        return this;
      }

      // optional int64 delay = 3;
      private long delay_ ;
      /**
       * <code>optional int64 delay = 3;</code>
       */
      public boolean hasDelay() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int64 delay = 3;</code>
       */
      public long getDelay() {
        return delay_;
      }
      /**
       * <code>optional int64 delay = 3;</code>
       */
      public Builder setDelay(long value) {
        bitField0_ |= 0x00000004;
        delay_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 delay = 3;</code>
       */
      public Builder clearDelay() {
        bitField0_ = (bitField0_ & ~0x00000004);
        delay_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:PullMessageRequest)
    }

    static {
      defaultInstance = new PullMessageRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullMessageRequest)
  }

  public interface PullMessageResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .Message message = 1;
    /**
     * <code>repeated .Message message = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.Message> 
        getMessageList();
    /**
     * <code>repeated .Message message = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.Message getMessage(int index);
    /**
     * <code>repeated .Message message = 1;</code>
     */
    int getMessageCount();
    /**
     * <code>repeated .Message message = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.MessageOrBuilder> 
        getMessageOrBuilderList();
    /**
     * <code>repeated .Message message = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageOrBuilder getMessageOrBuilder(
        int index);

    // required int64 current = 2;
    /**
     * <code>required int64 current = 2;</code>
     */
    boolean hasCurrent();
    /**
     * <code>required int64 current = 2;</code>
     */
    long getCurrent();

    // required int64 head = 3;
    /**
     * <code>required int64 head = 3;</code>
     */
    boolean hasHead();
    /**
     * <code>required int64 head = 3;</code>
     */
    long getHead();
  }
  /**
   * Protobuf type {@code PullMessageResult}
   */
  public static final class PullMessageResult extends
      com.google.protobuf.GeneratedMessage
      implements PullMessageResultOrBuilder {
    // Use PullMessageResult.newBuilder() to construct.
    private PullMessageResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullMessageResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullMessageResult defaultInstance;
    public static PullMessageResult getDefaultInstance() {
      return defaultInstance;
    }

    public PullMessageResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullMessageResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                message_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.Message>();
                mutable_bitField0_ |= 0x00000001;
              }
              message_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.Message.PARSER, extensionRegistry));
              break;
            }
            case 16: {
              bitField0_ |= 0x00000001;
              current_ = input.readInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              head_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          message_ = java.util.Collections.unmodifiableList(message_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullMessageResult.class, cn.wildfirechat.proto.WFCMessage.PullMessageResult.Builder.class);
    }

    public static com.google.protobuf.Parser<PullMessageResult> PARSER =
        new com.google.protobuf.AbstractParser<PullMessageResult>() {
      public PullMessageResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullMessageResult(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // repeated .Message message = 1;
    public static final int MESSAGE_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.Message> message_;
    /**
     * <code>repeated .Message message = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.Message> getMessageList() {
      return message_;
    }
    /**
     * <code>repeated .Message message = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.MessageOrBuilder> 
        getMessageOrBuilderList() {
      return message_;
    }
    /**
     * <code>repeated .Message message = 1;</code>
     */
    public int getMessageCount() {
      return message_.size();
    }
    /**
     * <code>repeated .Message message = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.Message getMessage(int index) {
      return message_.get(index);
    }
    /**
     * <code>repeated .Message message = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageOrBuilder getMessageOrBuilder(
        int index) {
      return message_.get(index);
    }

    // required int64 current = 2;
    public static final int CURRENT_FIELD_NUMBER = 2;
    private long current_;
    /**
     * <code>required int64 current = 2;</code>
     */
    public boolean hasCurrent() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int64 current = 2;</code>
     */
    public long getCurrent() {
      return current_;
    }

    // required int64 head = 3;
    public static final int HEAD_FIELD_NUMBER = 3;
    private long head_;
    /**
     * <code>required int64 head = 3;</code>
     */
    public boolean hasHead() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int64 head = 3;</code>
     */
    public long getHead() {
      return head_;
    }

    private void initFields() {
      message_ = java.util.Collections.emptyList();
      current_ = 0L;
      head_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasCurrent()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasHead()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getMessageCount(); i++) {
        if (!getMessage(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < message_.size(); i++) {
        output.writeMessage(1, message_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(2, current_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(3, head_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < message_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, message_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, current_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, head_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullMessageResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullMessageResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullMessageResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullMessageResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullMessageResult.class, cn.wildfirechat.proto.WFCMessage.PullMessageResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullMessageResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMessageFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (messageBuilder_ == null) {
          message_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          messageBuilder_.clear();
        }
        current_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        head_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullMessageResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullMessageResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullMessageResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullMessageResult build() {
        cn.wildfirechat.proto.WFCMessage.PullMessageResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullMessageResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullMessageResult result = new cn.wildfirechat.proto.WFCMessage.PullMessageResult(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (messageBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            message_ = java.util.Collections.unmodifiableList(message_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.message_ = message_;
        } else {
          result.message_ = messageBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.current_ = current_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.head_ = head_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullMessageResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullMessageResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullMessageResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullMessageResult.getDefaultInstance()) return this;
        if (messageBuilder_ == null) {
          if (!other.message_.isEmpty()) {
            if (message_.isEmpty()) {
              message_ = other.message_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMessageIsMutable();
              message_.addAll(other.message_);
            }
            onChanged();
          }
        } else {
          if (!other.message_.isEmpty()) {
            if (messageBuilder_.isEmpty()) {
              messageBuilder_.dispose();
              messageBuilder_ = null;
              message_ = other.message_;
              bitField0_ = (bitField0_ & ~0x00000001);
              messageBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMessageFieldBuilder() : null;
            } else {
              messageBuilder_.addAllMessages(other.message_);
            }
          }
        }
        if (other.hasCurrent()) {
          setCurrent(other.getCurrent());
        }
        if (other.hasHead()) {
          setHead(other.getHead());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasCurrent()) {
          
          return false;
        }
        if (!hasHead()) {
          
          return false;
        }
        for (int i = 0; i < getMessageCount(); i++) {
          if (!getMessage(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullMessageResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullMessageResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .Message message = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.Message> message_ =
        java.util.Collections.emptyList();
      private void ensureMessageIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          message_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.Message>(message_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Message, cn.wildfirechat.proto.WFCMessage.Message.Builder, cn.wildfirechat.proto.WFCMessage.MessageOrBuilder> messageBuilder_;

      /**
       * <code>repeated .Message message = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.Message> getMessageList() {
        if (messageBuilder_ == null) {
          return java.util.Collections.unmodifiableList(message_);
        } else {
          return messageBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public int getMessageCount() {
        if (messageBuilder_ == null) {
          return message_.size();
        } else {
          return messageBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Message getMessage(int index) {
        if (messageBuilder_ == null) {
          return message_.get(index);
        } else {
          return messageBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public Builder setMessage(
          int index, cn.wildfirechat.proto.WFCMessage.Message value) {
        if (messageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessageIsMutable();
          message_.set(index, value);
          onChanged();
        } else {
          messageBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public Builder setMessage(
          int index, cn.wildfirechat.proto.WFCMessage.Message.Builder builderForValue) {
        if (messageBuilder_ == null) {
          ensureMessageIsMutable();
          message_.set(index, builderForValue.build());
          onChanged();
        } else {
          messageBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public Builder addMessage(cn.wildfirechat.proto.WFCMessage.Message value) {
        if (messageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessageIsMutable();
          message_.add(value);
          onChanged();
        } else {
          messageBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public Builder addMessage(
          int index, cn.wildfirechat.proto.WFCMessage.Message value) {
        if (messageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessageIsMutable();
          message_.add(index, value);
          onChanged();
        } else {
          messageBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public Builder addMessage(
          cn.wildfirechat.proto.WFCMessage.Message.Builder builderForValue) {
        if (messageBuilder_ == null) {
          ensureMessageIsMutable();
          message_.add(builderForValue.build());
          onChanged();
        } else {
          messageBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public Builder addMessage(
          int index, cn.wildfirechat.proto.WFCMessage.Message.Builder builderForValue) {
        if (messageBuilder_ == null) {
          ensureMessageIsMutable();
          message_.add(index, builderForValue.build());
          onChanged();
        } else {
          messageBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public Builder addAllMessage(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.Message> values) {
        if (messageBuilder_ == null) {
          ensureMessageIsMutable();
          super.addAll(values, message_);
          onChanged();
        } else {
          messageBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public Builder clearMessage() {
        if (messageBuilder_ == null) {
          message_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          messageBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public Builder removeMessage(int index) {
        if (messageBuilder_ == null) {
          ensureMessageIsMutable();
          message_.remove(index);
          onChanged();
        } else {
          messageBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Message.Builder getMessageBuilder(
          int index) {
        return getMessageFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageOrBuilder getMessageOrBuilder(
          int index) {
        if (messageBuilder_ == null) {
          return message_.get(index);  } else {
          return messageBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.MessageOrBuilder> 
           getMessageOrBuilderList() {
        if (messageBuilder_ != null) {
          return messageBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(message_);
        }
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Message.Builder addMessageBuilder() {
        return getMessageFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.Message.getDefaultInstance());
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Message.Builder addMessageBuilder(
          int index) {
        return getMessageFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.Message.getDefaultInstance());
      }
      /**
       * <code>repeated .Message message = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.Message.Builder> 
           getMessageBuilderList() {
        return getMessageFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Message, cn.wildfirechat.proto.WFCMessage.Message.Builder, cn.wildfirechat.proto.WFCMessage.MessageOrBuilder> 
          getMessageFieldBuilder() {
        if (messageBuilder_ == null) {
          messageBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.Message, cn.wildfirechat.proto.WFCMessage.Message.Builder, cn.wildfirechat.proto.WFCMessage.MessageOrBuilder>(
                  message_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          message_ = null;
        }
        return messageBuilder_;
      }

      // required int64 current = 2;
      private long current_ ;
      /**
       * <code>required int64 current = 2;</code>
       */
      public boolean hasCurrent() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int64 current = 2;</code>
       */
      public long getCurrent() {
        return current_;
      }
      /**
       * <code>required int64 current = 2;</code>
       */
      public Builder setCurrent(long value) {
        bitField0_ |= 0x00000002;
        current_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 current = 2;</code>
       */
      public Builder clearCurrent() {
        bitField0_ = (bitField0_ & ~0x00000002);
        current_ = 0L;
        onChanged();
        return this;
      }

      // required int64 head = 3;
      private long head_ ;
      /**
       * <code>required int64 head = 3;</code>
       */
      public boolean hasHead() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int64 head = 3;</code>
       */
      public long getHead() {
        return head_;
      }
      /**
       * <code>required int64 head = 3;</code>
       */
      public Builder setHead(long value) {
        bitField0_ |= 0x00000004;
        head_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 head = 3;</code>
       */
      public Builder clearHead() {
        bitField0_ = (bitField0_ & ~0x00000004);
        head_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:PullMessageResult)
    }

    static {
      defaultInstance = new PullMessageResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullMessageResult)
  }

  public interface PullGroupInfoResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .GroupInfo info = 1;
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.GroupInfo> 
        getInfoList();
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupInfo getInfo(int index);
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    int getInfoCount();
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder> 
        getInfoOrBuilderList();
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder getInfoOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code PullGroupInfoResult}
   */
  public static final class PullGroupInfoResult extends
      com.google.protobuf.GeneratedMessage
      implements PullGroupInfoResultOrBuilder {
    // Use PullGroupInfoResult.newBuilder() to construct.
    private PullGroupInfoResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullGroupInfoResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullGroupInfoResult defaultInstance;
    public static PullGroupInfoResult getDefaultInstance() {
      return defaultInstance;
    }

    public PullGroupInfoResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullGroupInfoResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                info_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.GroupInfo>();
                mutable_bitField0_ |= 0x00000001;
              }
              info_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.GroupInfo.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          info_ = java.util.Collections.unmodifiableList(info_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupInfoResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupInfoResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult.class, cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult.Builder.class);
    }

    public static com.google.protobuf.Parser<PullGroupInfoResult> PARSER =
        new com.google.protobuf.AbstractParser<PullGroupInfoResult>() {
      public PullGroupInfoResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullGroupInfoResult(input, extensionRegistry);
      }
    };

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

    // repeated .GroupInfo info = 1;
    public static final int INFO_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.GroupInfo> info_;
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupInfo> getInfoList() {
      return info_;
    }
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder> 
        getInfoOrBuilderList() {
      return info_;
    }
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    public int getInfoCount() {
      return info_.size();
    }
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupInfo getInfo(int index) {
      return info_.get(index);
    }
    /**
     * <code>repeated .GroupInfo info = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder getInfoOrBuilder(
        int index) {
      return info_.get(index);
    }

    private void initFields() {
      info_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getInfoCount(); i++) {
        if (!getInfo(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < info_.size(); i++) {
        output.writeMessage(1, info_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < info_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, info_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullGroupInfoResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullGroupInfoResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupInfoResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupInfoResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult.class, cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (infoBuilder_ == null) {
          info_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          infoBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupInfoResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult build() {
        cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult result = new cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult(this);
        int from_bitField0_ = bitField0_;
        if (infoBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            info_ = java.util.Collections.unmodifiableList(info_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.info_ = info_;
        } else {
          result.info_ = infoBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult.getDefaultInstance()) return this;
        if (infoBuilder_ == null) {
          if (!other.info_.isEmpty()) {
            if (info_.isEmpty()) {
              info_ = other.info_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureInfoIsMutable();
              info_.addAll(other.info_);
            }
            onChanged();
          }
        } else {
          if (!other.info_.isEmpty()) {
            if (infoBuilder_.isEmpty()) {
              infoBuilder_.dispose();
              infoBuilder_ = null;
              info_ = other.info_;
              bitField0_ = (bitField0_ & ~0x00000001);
              infoBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getInfoFieldBuilder() : null;
            } else {
              infoBuilder_.addAllMessages(other.info_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getInfoCount(); i++) {
          if (!getInfo(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullGroupInfoResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .GroupInfo info = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.GroupInfo> info_ =
        java.util.Collections.emptyList();
      private void ensureInfoIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          info_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.GroupInfo>(info_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupInfo, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder, cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder> infoBuilder_;

      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupInfo> getInfoList() {
        if (infoBuilder_ == null) {
          return java.util.Collections.unmodifiableList(info_);
        } else {
          return infoBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public int getInfoCount() {
        if (infoBuilder_ == null) {
          return info_.size();
        } else {
          return infoBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupInfo getInfo(int index) {
        if (infoBuilder_ == null) {
          return info_.get(index);
        } else {
          return infoBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public Builder setInfo(
          int index, cn.wildfirechat.proto.WFCMessage.GroupInfo value) {
        if (infoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInfoIsMutable();
          info_.set(index, value);
          onChanged();
        } else {
          infoBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public Builder setInfo(
          int index, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder builderForValue) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          info_.set(index, builderForValue.build());
          onChanged();
        } else {
          infoBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public Builder addInfo(cn.wildfirechat.proto.WFCMessage.GroupInfo value) {
        if (infoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInfoIsMutable();
          info_.add(value);
          onChanged();
        } else {
          infoBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public Builder addInfo(
          int index, cn.wildfirechat.proto.WFCMessage.GroupInfo value) {
        if (infoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInfoIsMutable();
          info_.add(index, value);
          onChanged();
        } else {
          infoBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public Builder addInfo(
          cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder builderForValue) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          info_.add(builderForValue.build());
          onChanged();
        } else {
          infoBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public Builder addInfo(
          int index, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder builderForValue) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          info_.add(index, builderForValue.build());
          onChanged();
        } else {
          infoBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public Builder addAllInfo(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.GroupInfo> values) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          super.addAll(values, info_);
          onChanged();
        } else {
          infoBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public Builder clearInfo() {
        if (infoBuilder_ == null) {
          info_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          infoBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public Builder removeInfo(int index) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          info_.remove(index);
          onChanged();
        } else {
          infoBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder getInfoBuilder(
          int index) {
        return getInfoFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder getInfoOrBuilder(
          int index) {
        if (infoBuilder_ == null) {
          return info_.get(index);  } else {
          return infoBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder> 
           getInfoOrBuilderList() {
        if (infoBuilder_ != null) {
          return infoBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(info_);
        }
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder addInfoBuilder() {
        return getInfoFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.GroupInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder addInfoBuilder(
          int index) {
        return getInfoFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.GroupInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .GroupInfo info = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder> 
           getInfoBuilderList() {
        return getInfoFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupInfo, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder, cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder> 
          getInfoFieldBuilder() {
        if (infoBuilder_ == null) {
          infoBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.GroupInfo, cn.wildfirechat.proto.WFCMessage.GroupInfo.Builder, cn.wildfirechat.proto.WFCMessage.GroupInfoOrBuilder>(
                  info_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          info_ = null;
        }
        return infoBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:PullGroupInfoResult)
    }

    static {
      defaultInstance = new PullGroupInfoResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullGroupInfoResult)
  }

  public interface PullGroupMemberRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string target = 1;
    /**
     * <code>required string target = 1;</code>
     */
    boolean hasTarget();
    /**
     * <code>required string target = 1;</code>
     */
    java.lang.String getTarget();
    /**
     * <code>required string target = 1;</code>
     */
    com.google.protobuf.ByteString
        getTargetBytes();

    // required int64 head = 2;
    /**
     * <code>required int64 head = 2;</code>
     */
    boolean hasHead();
    /**
     * <code>required int64 head = 2;</code>
     */
    long getHead();
  }
  /**
   * Protobuf type {@code PullGroupMemberRequest}
   */
  public static final class PullGroupMemberRequest extends
      com.google.protobuf.GeneratedMessage
      implements PullGroupMemberRequestOrBuilder {
    // Use PullGroupMemberRequest.newBuilder() to construct.
    private PullGroupMemberRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullGroupMemberRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullGroupMemberRequest defaultInstance;
    public static PullGroupMemberRequest getDefaultInstance() {
      return defaultInstance;
    }

    public PullGroupMemberRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullGroupMemberRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              target_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              head_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest.class, cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<PullGroupMemberRequest> PARSER =
        new com.google.protobuf.AbstractParser<PullGroupMemberRequest>() {
      public PullGroupMemberRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullGroupMemberRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string target = 1;
    public static final int TARGET_FIELD_NUMBER = 1;
    private java.lang.Object target_;
    /**
     * <code>required string target = 1;</code>
     */
    public boolean hasTarget() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string target = 1;</code>
     */
    public java.lang.String getTarget() {
      java.lang.Object ref = target_;
      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();
        if (bs.isValidUtf8()) {
          target_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string target = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTargetBytes() {
      java.lang.Object ref = target_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        target_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int64 head = 2;
    public static final int HEAD_FIELD_NUMBER = 2;
    private long head_;
    /**
     * <code>required int64 head = 2;</code>
     */
    public boolean hasHead() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int64 head = 2;</code>
     */
    public long getHead() {
      return head_;
    }

    private void initFields() {
      target_ = "";
      head_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasTarget()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasHead()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getTargetBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, head_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getTargetBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, head_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullGroupMemberRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest.class, cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        target_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        head_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest build() {
        cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest result = new cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.target_ = target_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.head_ = head_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest.getDefaultInstance()) return this;
        if (other.hasTarget()) {
          bitField0_ |= 0x00000001;
          target_ = other.target_;
          onChanged();
        }
        if (other.hasHead()) {
          setHead(other.getHead());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTarget()) {
          
          return false;
        }
        if (!hasHead()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullGroupMemberRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string target = 1;
      private java.lang.Object target_ = "";
      /**
       * <code>required string target = 1;</code>
       */
      public boolean hasTarget() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string target = 1;</code>
       */
      public java.lang.String getTarget() {
        java.lang.Object ref = target_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          target_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string target = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTargetBytes() {
        java.lang.Object ref = target_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          target_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string target = 1;</code>
       */
      public Builder setTarget(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        target_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string target = 1;</code>
       */
      public Builder clearTarget() {
        bitField0_ = (bitField0_ & ~0x00000001);
        target_ = getDefaultInstance().getTarget();
        onChanged();
        return this;
      }
      /**
       * <code>required string target = 1;</code>
       */
      public Builder setTargetBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        target_ = value;
        onChanged();
        return this;
      }

      // required int64 head = 2;
      private long head_ ;
      /**
       * <code>required int64 head = 2;</code>
       */
      public boolean hasHead() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int64 head = 2;</code>
       */
      public long getHead() {
        return head_;
      }
      /**
       * <code>required int64 head = 2;</code>
       */
      public Builder setHead(long value) {
        bitField0_ |= 0x00000002;
        head_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 head = 2;</code>
       */
      public Builder clearHead() {
        bitField0_ = (bitField0_ & ~0x00000002);
        head_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:PullGroupMemberRequest)
    }

    static {
      defaultInstance = new PullGroupMemberRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullGroupMemberRequest)
  }

  public interface PullGroupMemberResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .GroupMember member = 1;
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> 
        getMemberList();
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupMember getMember(int index);
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    int getMemberCount();
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
        getMemberOrBuilderList();
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder getMemberOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code PullGroupMemberResult}
   */
  public static final class PullGroupMemberResult extends
      com.google.protobuf.GeneratedMessage
      implements PullGroupMemberResultOrBuilder {
    // Use PullGroupMemberResult.newBuilder() to construct.
    private PullGroupMemberResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullGroupMemberResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullGroupMemberResult defaultInstance;
    public static PullGroupMemberResult getDefaultInstance() {
      return defaultInstance;
    }

    public PullGroupMemberResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullGroupMemberResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                member_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.GroupMember>();
                mutable_bitField0_ |= 0x00000001;
              }
              member_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.GroupMember.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          member_ = java.util.Collections.unmodifiableList(member_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult.class, cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult.Builder.class);
    }

    public static com.google.protobuf.Parser<PullGroupMemberResult> PARSER =
        new com.google.protobuf.AbstractParser<PullGroupMemberResult>() {
      public PullGroupMemberResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullGroupMemberResult(input, extensionRegistry);
      }
    };

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

    // repeated .GroupMember member = 1;
    public static final int MEMBER_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> member_;
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> getMemberList() {
      return member_;
    }
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
        getMemberOrBuilderList() {
      return member_;
    }
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    public int getMemberCount() {
      return member_.size();
    }
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupMember getMember(int index) {
      return member_.get(index);
    }
    /**
     * <code>repeated .GroupMember member = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder getMemberOrBuilder(
        int index) {
      return member_.get(index);
    }

    private void initFields() {
      member_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getMemberCount(); i++) {
        if (!getMember(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < member_.size(); i++) {
        output.writeMessage(1, member_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < member_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, member_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullGroupMemberResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullGroupMemberResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult.class, cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMemberFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (memberBuilder_ == null) {
          member_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          memberBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullGroupMemberResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult build() {
        cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult result = new cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult(this);
        int from_bitField0_ = bitField0_;
        if (memberBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            member_ = java.util.Collections.unmodifiableList(member_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.member_ = member_;
        } else {
          result.member_ = memberBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult.getDefaultInstance()) return this;
        if (memberBuilder_ == null) {
          if (!other.member_.isEmpty()) {
            if (member_.isEmpty()) {
              member_ = other.member_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMemberIsMutable();
              member_.addAll(other.member_);
            }
            onChanged();
          }
        } else {
          if (!other.member_.isEmpty()) {
            if (memberBuilder_.isEmpty()) {
              memberBuilder_.dispose();
              memberBuilder_ = null;
              member_ = other.member_;
              bitField0_ = (bitField0_ & ~0x00000001);
              memberBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMemberFieldBuilder() : null;
            } else {
              memberBuilder_.addAllMessages(other.member_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getMemberCount(); i++) {
          if (!getMember(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullGroupMemberResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .GroupMember member = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> member_ =
        java.util.Collections.emptyList();
      private void ensureMemberIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          member_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.GroupMember>(member_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupMember, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder, cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> memberBuilder_;

      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember> getMemberList() {
        if (memberBuilder_ == null) {
          return java.util.Collections.unmodifiableList(member_);
        } else {
          return memberBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public int getMemberCount() {
        if (memberBuilder_ == null) {
          return member_.size();
        } else {
          return memberBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember getMember(int index) {
        if (memberBuilder_ == null) {
          return member_.get(index);
        } else {
          return memberBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public Builder setMember(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember value) {
        if (memberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMemberIsMutable();
          member_.set(index, value);
          onChanged();
        } else {
          memberBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public Builder setMember(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder builderForValue) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          member_.set(index, builderForValue.build());
          onChanged();
        } else {
          memberBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public Builder addMember(cn.wildfirechat.proto.WFCMessage.GroupMember value) {
        if (memberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMemberIsMutable();
          member_.add(value);
          onChanged();
        } else {
          memberBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public Builder addMember(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember value) {
        if (memberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMemberIsMutable();
          member_.add(index, value);
          onChanged();
        } else {
          memberBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public Builder addMember(
          cn.wildfirechat.proto.WFCMessage.GroupMember.Builder builderForValue) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          member_.add(builderForValue.build());
          onChanged();
        } else {
          memberBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public Builder addMember(
          int index, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder builderForValue) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          member_.add(index, builderForValue.build());
          onChanged();
        } else {
          memberBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public Builder addAllMember(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.GroupMember> values) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          super.addAll(values, member_);
          onChanged();
        } else {
          memberBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public Builder clearMember() {
        if (memberBuilder_ == null) {
          member_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          memberBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public Builder removeMember(int index) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          member_.remove(index);
          onChanged();
        } else {
          memberBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember.Builder getMemberBuilder(
          int index) {
        return getMemberFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder getMemberOrBuilder(
          int index) {
        if (memberBuilder_ == null) {
          return member_.get(index);  } else {
          return memberBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
           getMemberOrBuilderList() {
        if (memberBuilder_ != null) {
          return memberBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(member_);
        }
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember.Builder addMemberBuilder() {
        return getMemberFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.GroupMember.getDefaultInstance());
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.GroupMember.Builder addMemberBuilder(
          int index) {
        return getMemberFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.GroupMember.getDefaultInstance());
      }
      /**
       * <code>repeated .GroupMember member = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.GroupMember.Builder> 
           getMemberBuilderList() {
        return getMemberFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.GroupMember, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder, cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder> 
          getMemberFieldBuilder() {
        if (memberBuilder_ == null) {
          memberBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.GroupMember, cn.wildfirechat.proto.WFCMessage.GroupMember.Builder, cn.wildfirechat.proto.WFCMessage.GroupMemberOrBuilder>(
                  member_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          member_ = null;
        }
        return memberBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:PullGroupMemberResult)
    }

    static {
      defaultInstance = new PullGroupMemberResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullGroupMemberResult)
  }

  public interface UserRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string uid = 1;
    /**
     * <code>required string uid = 1;</code>
     */
    boolean hasUid();
    /**
     * <code>required string uid = 1;</code>
     */
    java.lang.String getUid();
    /**
     * <code>required string uid = 1;</code>
     */
    com.google.protobuf.ByteString
        getUidBytes();

    // optional int64 update_dt = 2;
    /**
     * <code>optional int64 update_dt = 2;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>optional int64 update_dt = 2;</code>
     */
    long getUpdateDt();
  }
  /**
   * Protobuf type {@code UserRequest}
   */
  public static final class UserRequest extends
      com.google.protobuf.GeneratedMessage
      implements UserRequestOrBuilder {
    // Use UserRequest.newBuilder() to construct.
    private UserRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private UserRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final UserRequest defaultInstance;
    public static UserRequest getDefaultInstance() {
      return defaultInstance;
    }

    public UserRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private UserRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              uid_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              updateDt_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_UserRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_UserRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.UserRequest.class, cn.wildfirechat.proto.WFCMessage.UserRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<UserRequest> PARSER =
        new com.google.protobuf.AbstractParser<UserRequest>() {
      public UserRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UserRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string uid = 1;
    public static final int UID_FIELD_NUMBER = 1;
    private java.lang.Object uid_;
    /**
     * <code>required string uid = 1;</code>
     */
    public boolean hasUid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public java.lang.String getUid() {
      java.lang.Object ref = uid_;
      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();
        if (bs.isValidUtf8()) {
          uid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUidBytes() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 update_dt = 2;
    public static final int UPDATE_DT_FIELD_NUMBER = 2;
    private long updateDt_;
    /**
     * <code>optional int64 update_dt = 2;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int64 update_dt = 2;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    private void initFields() {
      uid_ = "";
      updateDt_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, updateDt_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, updateDt_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.UserRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UserRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UserRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UserRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.UserRequest.class, cn.wildfirechat.proto.WFCMessage.UserRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.UserRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UserRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.UserRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.UserRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.UserRequest build() {
        cn.wildfirechat.proto.WFCMessage.UserRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.UserRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.UserRequest result = new cn.wildfirechat.proto.WFCMessage.UserRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uid_ = uid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.updateDt_ = updateDt_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.UserRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.UserRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.UserRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.UserRequest.getDefaultInstance()) return this;
        if (other.hasUid()) {
          bitField0_ |= 0x00000001;
          uid_ = other.uid_;
          onChanged();
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUid()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.UserRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.UserRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string uid = 1;
      private java.lang.Object uid_ = "";
      /**
       * <code>required string uid = 1;</code>
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public java.lang.String getUid() {
        java.lang.Object ref = uid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          uid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUidBytes() {
        java.lang.Object ref = uid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder clearUid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uid_ = getDefaultInstance().getUid();
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }

      // optional int64 update_dt = 2;
      private long updateDt_ ;
      /**
       * <code>optional int64 update_dt = 2;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int64 update_dt = 2;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>optional int64 update_dt = 2;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000002;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 update_dt = 2;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000002);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:UserRequest)
    }

    static {
      defaultInstance = new UserRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:UserRequest)
  }

  public interface PullUserRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .UserRequest request = 1;
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.UserRequest> 
        getRequestList();
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.UserRequest getRequest(int index);
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    int getRequestCount();
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder> 
        getRequestOrBuilderList();
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder getRequestOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code PullUserRequest}
   */
  public static final class PullUserRequest extends
      com.google.protobuf.GeneratedMessage
      implements PullUserRequestOrBuilder {
    // Use PullUserRequest.newBuilder() to construct.
    private PullUserRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullUserRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullUserRequest defaultInstance;
    public static PullUserRequest getDefaultInstance() {
      return defaultInstance;
    }

    public PullUserRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullUserRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                request_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.UserRequest>();
                mutable_bitField0_ |= 0x00000001;
              }
              request_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.UserRequest.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          request_ = java.util.Collections.unmodifiableList(request_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullUserRequest.class, cn.wildfirechat.proto.WFCMessage.PullUserRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<PullUserRequest> PARSER =
        new com.google.protobuf.AbstractParser<PullUserRequest>() {
      public PullUserRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullUserRequest(input, extensionRegistry);
      }
    };

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

    // repeated .UserRequest request = 1;
    public static final int REQUEST_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.UserRequest> request_;
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.UserRequest> getRequestList() {
      return request_;
    }
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder> 
        getRequestOrBuilderList() {
      return request_;
    }
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    public int getRequestCount() {
      return request_.size();
    }
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.UserRequest getRequest(int index) {
      return request_.get(index);
    }
    /**
     * <code>repeated .UserRequest request = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder getRequestOrBuilder(
        int index) {
      return request_.get(index);
    }

    private void initFields() {
      request_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getRequestCount(); i++) {
        if (!getRequest(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < request_.size(); i++) {
        output.writeMessage(1, request_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < request_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, request_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullUserRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullUserRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullUserRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullUserRequest.class, cn.wildfirechat.proto.WFCMessage.PullUserRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullUserRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getRequestFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (requestBuilder_ == null) {
          request_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          requestBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullUserRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullUserRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullUserRequest build() {
        cn.wildfirechat.proto.WFCMessage.PullUserRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullUserRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullUserRequest result = new cn.wildfirechat.proto.WFCMessage.PullUserRequest(this);
        int from_bitField0_ = bitField0_;
        if (requestBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            request_ = java.util.Collections.unmodifiableList(request_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.request_ = request_;
        } else {
          result.request_ = requestBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullUserRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullUserRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullUserRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullUserRequest.getDefaultInstance()) return this;
        if (requestBuilder_ == null) {
          if (!other.request_.isEmpty()) {
            if (request_.isEmpty()) {
              request_ = other.request_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRequestIsMutable();
              request_.addAll(other.request_);
            }
            onChanged();
          }
        } else {
          if (!other.request_.isEmpty()) {
            if (requestBuilder_.isEmpty()) {
              requestBuilder_.dispose();
              requestBuilder_ = null;
              request_ = other.request_;
              bitField0_ = (bitField0_ & ~0x00000001);
              requestBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getRequestFieldBuilder() : null;
            } else {
              requestBuilder_.addAllMessages(other.request_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getRequestCount(); i++) {
          if (!getRequest(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullUserRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullUserRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .UserRequest request = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.UserRequest> request_ =
        java.util.Collections.emptyList();
      private void ensureRequestIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          request_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.UserRequest>(request_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.UserRequest, cn.wildfirechat.proto.WFCMessage.UserRequest.Builder, cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder> requestBuilder_;

      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.UserRequest> getRequestList() {
        if (requestBuilder_ == null) {
          return java.util.Collections.unmodifiableList(request_);
        } else {
          return requestBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public int getRequestCount() {
        if (requestBuilder_ == null) {
          return request_.size();
        } else {
          return requestBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserRequest getRequest(int index) {
        if (requestBuilder_ == null) {
          return request_.get(index);
        } else {
          return requestBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public Builder setRequest(
          int index, cn.wildfirechat.proto.WFCMessage.UserRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestIsMutable();
          request_.set(index, value);
          onChanged();
        } else {
          requestBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public Builder setRequest(
          int index, cn.wildfirechat.proto.WFCMessage.UserRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          request_.set(index, builderForValue.build());
          onChanged();
        } else {
          requestBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public Builder addRequest(cn.wildfirechat.proto.WFCMessage.UserRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestIsMutable();
          request_.add(value);
          onChanged();
        } else {
          requestBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public Builder addRequest(
          int index, cn.wildfirechat.proto.WFCMessage.UserRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestIsMutable();
          request_.add(index, value);
          onChanged();
        } else {
          requestBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public Builder addRequest(
          cn.wildfirechat.proto.WFCMessage.UserRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          request_.add(builderForValue.build());
          onChanged();
        } else {
          requestBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public Builder addRequest(
          int index, cn.wildfirechat.proto.WFCMessage.UserRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          request_.add(index, builderForValue.build());
          onChanged();
        } else {
          requestBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public Builder addAllRequest(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.UserRequest> values) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          super.addAll(values, request_);
          onChanged();
        } else {
          requestBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public Builder clearRequest() {
        if (requestBuilder_ == null) {
          request_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          requestBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public Builder removeRequest(int index) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          request_.remove(index);
          onChanged();
        } else {
          requestBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserRequest.Builder getRequestBuilder(
          int index) {
        return getRequestFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder getRequestOrBuilder(
          int index) {
        if (requestBuilder_ == null) {
          return request_.get(index);  } else {
          return requestBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder> 
           getRequestOrBuilderList() {
        if (requestBuilder_ != null) {
          return requestBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(request_);
        }
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserRequest.Builder addRequestBuilder() {
        return getRequestFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.UserRequest.getDefaultInstance());
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserRequest.Builder addRequestBuilder(
          int index) {
        return getRequestFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.UserRequest.getDefaultInstance());
      }
      /**
       * <code>repeated .UserRequest request = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.UserRequest.Builder> 
           getRequestBuilderList() {
        return getRequestFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.UserRequest, cn.wildfirechat.proto.WFCMessage.UserRequest.Builder, cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder> 
          getRequestFieldBuilder() {
        if (requestBuilder_ == null) {
          requestBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.UserRequest, cn.wildfirechat.proto.WFCMessage.UserRequest.Builder, cn.wildfirechat.proto.WFCMessage.UserRequestOrBuilder>(
                  request_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          request_ = null;
        }
        return requestBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:PullUserRequest)
    }

    static {
      defaultInstance = new PullUserRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullUserRequest)
  }

  public interface UserResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .User user = 1;
    /**
     * <code>required .User user = 1;</code>
     */
    boolean hasUser();
    /**
     * <code>required .User user = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.User getUser();
    /**
     * <code>required .User user = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.UserOrBuilder getUserOrBuilder();

    // required int32 code = 2;
    /**
     * <code>required int32 code = 2;</code>
     */
    boolean hasCode();
    /**
     * <code>required int32 code = 2;</code>
     */
    int getCode();
  }
  /**
   * Protobuf type {@code UserResult}
   */
  public static final class UserResult extends
      com.google.protobuf.GeneratedMessage
      implements UserResultOrBuilder {
    // Use UserResult.newBuilder() to construct.
    private UserResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private UserResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final UserResult defaultInstance;
    public static UserResult getDefaultInstance() {
      return defaultInstance;
    }

    public UserResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private UserResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              cn.wildfirechat.proto.WFCMessage.User.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = user_.toBuilder();
              }
              user_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.User.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(user_);
                user_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              code_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_UserResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_UserResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.UserResult.class, cn.wildfirechat.proto.WFCMessage.UserResult.Builder.class);
    }

    public static com.google.protobuf.Parser<UserResult> PARSER =
        new com.google.protobuf.AbstractParser<UserResult>() {
      public UserResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UserResult(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required .User user = 1;
    public static final int USER_FIELD_NUMBER = 1;
    private cn.wildfirechat.proto.WFCMessage.User user_;
    /**
     * <code>required .User user = 1;</code>
     */
    public boolean hasUser() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .User user = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.User getUser() {
      return user_;
    }
    /**
     * <code>required .User user = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.UserOrBuilder getUserOrBuilder() {
      return user_;
    }

    // required int32 code = 2;
    public static final int CODE_FIELD_NUMBER = 2;
    private int code_;
    /**
     * <code>required int32 code = 2;</code>
     */
    public boolean hasCode() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 code = 2;</code>
     */
    public int getCode() {
      return code_;
    }

    private void initFields() {
      user_ = cn.wildfirechat.proto.WFCMessage.User.getDefaultInstance();
      code_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasUser()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasCode()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getUser().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, user_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, code_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, user_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, code_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.UserResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.UserResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UserResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UserResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UserResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.UserResult.class, cn.wildfirechat.proto.WFCMessage.UserResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.UserResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getUserFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (userBuilder_ == null) {
          user_ = cn.wildfirechat.proto.WFCMessage.User.getDefaultInstance();
        } else {
          userBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        code_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UserResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.UserResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.UserResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.UserResult build() {
        cn.wildfirechat.proto.WFCMessage.UserResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.UserResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.UserResult result = new cn.wildfirechat.proto.WFCMessage.UserResult(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (userBuilder_ == null) {
          result.user_ = user_;
        } else {
          result.user_ = userBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.code_ = code_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.UserResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.UserResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.UserResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.UserResult.getDefaultInstance()) return this;
        if (other.hasUser()) {
          mergeUser(other.getUser());
        }
        if (other.hasCode()) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUser()) {
          
          return false;
        }
        if (!hasCode()) {
          
          return false;
        }
        if (!getUser().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.UserResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.UserResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .User user = 1;
      private cn.wildfirechat.proto.WFCMessage.User user_ = cn.wildfirechat.proto.WFCMessage.User.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.User, cn.wildfirechat.proto.WFCMessage.User.Builder, cn.wildfirechat.proto.WFCMessage.UserOrBuilder> userBuilder_;
      /**
       * <code>required .User user = 1;</code>
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .User user = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.User getUser() {
        if (userBuilder_ == null) {
          return user_;
        } else {
          return userBuilder_.getMessage();
        }
      }
      /**
       * <code>required .User user = 1;</code>
       */
      public Builder setUser(cn.wildfirechat.proto.WFCMessage.User value) {
        if (userBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          user_ = value;
          onChanged();
        } else {
          userBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .User user = 1;</code>
       */
      public Builder setUser(
          cn.wildfirechat.proto.WFCMessage.User.Builder builderForValue) {
        if (userBuilder_ == null) {
          user_ = builderForValue.build();
          onChanged();
        } else {
          userBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .User user = 1;</code>
       */
      public Builder mergeUser(cn.wildfirechat.proto.WFCMessage.User value) {
        if (userBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              user_ != cn.wildfirechat.proto.WFCMessage.User.getDefaultInstance()) {
            user_ =
              cn.wildfirechat.proto.WFCMessage.User.newBuilder(user_).mergeFrom(value).buildPartial();
          } else {
            user_ = value;
          }
          onChanged();
        } else {
          userBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .User user = 1;</code>
       */
      public Builder clearUser() {
        if (userBuilder_ == null) {
          user_ = cn.wildfirechat.proto.WFCMessage.User.getDefaultInstance();
          onChanged();
        } else {
          userBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .User user = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.User.Builder getUserBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getUserFieldBuilder().getBuilder();
      }
      /**
       * <code>required .User user = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserOrBuilder getUserOrBuilder() {
        if (userBuilder_ != null) {
          return userBuilder_.getMessageOrBuilder();
        } else {
          return user_;
        }
      }
      /**
       * <code>required .User user = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.User, cn.wildfirechat.proto.WFCMessage.User.Builder, cn.wildfirechat.proto.WFCMessage.UserOrBuilder> 
          getUserFieldBuilder() {
        if (userBuilder_ == null) {
          userBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.User, cn.wildfirechat.proto.WFCMessage.User.Builder, cn.wildfirechat.proto.WFCMessage.UserOrBuilder>(
                  user_,
                  getParentForChildren(),
                  isClean());
          user_ = null;
        }
        return userBuilder_;
      }

      // required int32 code = 2;
      private int code_ ;
      /**
       * <code>required int32 code = 2;</code>
       */
      public boolean hasCode() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 code = 2;</code>
       */
      public int getCode() {
        return code_;
      }
      /**
       * <code>required int32 code = 2;</code>
       */
      public Builder setCode(int value) {
        bitField0_ |= 0x00000002;
        code_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 code = 2;</code>
       */
      public Builder clearCode() {
        bitField0_ = (bitField0_ & ~0x00000002);
        code_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:UserResult)
    }

    static {
      defaultInstance = new UserResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:UserResult)
  }

  public interface PullUserResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .UserResult result = 1;
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.UserResult> 
        getResultList();
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.UserResult getResult(int index);
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    int getResultCount();
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder> 
        getResultOrBuilderList();
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder getResultOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code PullUserResult}
   */
  public static final class PullUserResult extends
      com.google.protobuf.GeneratedMessage
      implements PullUserResultOrBuilder {
    // Use PullUserResult.newBuilder() to construct.
    private PullUserResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PullUserResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final PullUserResult defaultInstance;
    public static PullUserResult getDefaultInstance() {
      return defaultInstance;
    }

    public PullUserResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private PullUserResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                result_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.UserResult>();
                mutable_bitField0_ |= 0x00000001;
              }
              result_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.UserResult.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          result_ = java.util.Collections.unmodifiableList(result_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.PullUserResult.class, cn.wildfirechat.proto.WFCMessage.PullUserResult.Builder.class);
    }

    public static com.google.protobuf.Parser<PullUserResult> PARSER =
        new com.google.protobuf.AbstractParser<PullUserResult>() {
      public PullUserResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PullUserResult(input, extensionRegistry);
      }
    };

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

    // repeated .UserResult result = 1;
    public static final int RESULT_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.UserResult> result_;
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.UserResult> getResultList() {
      return result_;
    }
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder> 
        getResultOrBuilderList() {
      return result_;
    }
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    public int getResultCount() {
      return result_.size();
    }
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.UserResult getResult(int index) {
      return result_.get(index);
    }
    /**
     * <code>repeated .UserResult result = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder getResultOrBuilder(
        int index) {
      return result_.get(index);
    }

    private void initFields() {
      result_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getResultCount(); i++) {
        if (!getResult(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < result_.size(); i++) {
        output.writeMessage(1, result_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < result_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, result_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.PullUserResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.PullUserResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PullUserResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.PullUserResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.PullUserResult.class, cn.wildfirechat.proto.WFCMessage.PullUserResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.PullUserResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getResultFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (resultBuilder_ == null) {
          result_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          resultBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_PullUserResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.PullUserResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.PullUserResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.PullUserResult build() {
        cn.wildfirechat.proto.WFCMessage.PullUserResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.PullUserResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.PullUserResult result = new cn.wildfirechat.proto.WFCMessage.PullUserResult(this);
        int from_bitField0_ = bitField0_;
        if (resultBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            result_ = java.util.Collections.unmodifiableList(result_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.result_ = result_;
        } else {
          result.result_ = resultBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.PullUserResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.PullUserResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.PullUserResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.PullUserResult.getDefaultInstance()) return this;
        if (resultBuilder_ == null) {
          if (!other.result_.isEmpty()) {
            if (result_.isEmpty()) {
              result_ = other.result_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureResultIsMutable();
              result_.addAll(other.result_);
            }
            onChanged();
          }
        } else {
          if (!other.result_.isEmpty()) {
            if (resultBuilder_.isEmpty()) {
              resultBuilder_.dispose();
              resultBuilder_ = null;
              result_ = other.result_;
              bitField0_ = (bitField0_ & ~0x00000001);
              resultBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getResultFieldBuilder() : null;
            } else {
              resultBuilder_.addAllMessages(other.result_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getResultCount(); i++) {
          if (!getResult(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.PullUserResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.PullUserResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .UserResult result = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.UserResult> result_ =
        java.util.Collections.emptyList();
      private void ensureResultIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          result_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.UserResult>(result_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.UserResult, cn.wildfirechat.proto.WFCMessage.UserResult.Builder, cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder> resultBuilder_;

      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.UserResult> getResultList() {
        if (resultBuilder_ == null) {
          return java.util.Collections.unmodifiableList(result_);
        } else {
          return resultBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public int getResultCount() {
        if (resultBuilder_ == null) {
          return result_.size();
        } else {
          return resultBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserResult getResult(int index) {
        if (resultBuilder_ == null) {
          return result_.get(index);
        } else {
          return resultBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public Builder setResult(
          int index, cn.wildfirechat.proto.WFCMessage.UserResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultIsMutable();
          result_.set(index, value);
          onChanged();
        } else {
          resultBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public Builder setResult(
          int index, cn.wildfirechat.proto.WFCMessage.UserResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.set(index, builderForValue.build());
          onChanged();
        } else {
          resultBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public Builder addResult(cn.wildfirechat.proto.WFCMessage.UserResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultIsMutable();
          result_.add(value);
          onChanged();
        } else {
          resultBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public Builder addResult(
          int index, cn.wildfirechat.proto.WFCMessage.UserResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultIsMutable();
          result_.add(index, value);
          onChanged();
        } else {
          resultBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public Builder addResult(
          cn.wildfirechat.proto.WFCMessage.UserResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.add(builderForValue.build());
          onChanged();
        } else {
          resultBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public Builder addResult(
          int index, cn.wildfirechat.proto.WFCMessage.UserResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.add(index, builderForValue.build());
          onChanged();
        } else {
          resultBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public Builder addAllResult(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.UserResult> values) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          super.addAll(values, result_);
          onChanged();
        } else {
          resultBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public Builder clearResult() {
        if (resultBuilder_ == null) {
          result_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          resultBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public Builder removeResult(int index) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.remove(index);
          onChanged();
        } else {
          resultBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserResult.Builder getResultBuilder(
          int index) {
        return getResultFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder getResultOrBuilder(
          int index) {
        if (resultBuilder_ == null) {
          return result_.get(index);  } else {
          return resultBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder> 
           getResultOrBuilderList() {
        if (resultBuilder_ != null) {
          return resultBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(result_);
        }
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserResult.Builder addResultBuilder() {
        return getResultFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.UserResult.getDefaultInstance());
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserResult.Builder addResultBuilder(
          int index) {
        return getResultFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.UserResult.getDefaultInstance());
      }
      /**
       * <code>repeated .UserResult result = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.UserResult.Builder> 
           getResultBuilderList() {
        return getResultFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.UserResult, cn.wildfirechat.proto.WFCMessage.UserResult.Builder, cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder> 
          getResultFieldBuilder() {
        if (resultBuilder_ == null) {
          resultBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.UserResult, cn.wildfirechat.proto.WFCMessage.UserResult.Builder, cn.wildfirechat.proto.WFCMessage.UserResultOrBuilder>(
                  result_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          result_ = null;
        }
        return resultBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:PullUserResult)
    }

    static {
      defaultInstance = new PullUserResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:PullUserResult)
  }

  public interface QuitGroupRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string group_id = 1;
    /**
     * <code>required string group_id = 1;</code>
     */
    boolean hasGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    java.lang.String getGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();

    // repeated int32 to_line = 2;
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    java.util.List<java.lang.Integer> getToLineList();
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    int getToLineCount();
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    int getToLine(int index);

    // optional .MessageContent notify_content = 3;
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    boolean hasNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder();
  }
  /**
   * Protobuf type {@code QuitGroupRequest}
   */
  public static final class QuitGroupRequest extends
      com.google.protobuf.GeneratedMessage
      implements QuitGroupRequestOrBuilder {
    // Use QuitGroupRequest.newBuilder() to construct.
    private QuitGroupRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private QuitGroupRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final QuitGroupRequest defaultInstance;
    public static QuitGroupRequest getDefaultInstance() {
      return defaultInstance;
    }

    public QuitGroupRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private QuitGroupRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              groupId_ = input.readBytes();
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              toLine_.add(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                toLine_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 26: {
              cn.wildfirechat.proto.WFCMessage.MessageContent.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = notifyContent_.toBuilder();
              }
              notifyContent_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.MessageContent.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(notifyContent_);
                notifyContent_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_QuitGroupRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_QuitGroupRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.QuitGroupRequest.class, cn.wildfirechat.proto.WFCMessage.QuitGroupRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<QuitGroupRequest> PARSER =
        new com.google.protobuf.AbstractParser<QuitGroupRequest>() {
      public QuitGroupRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new QuitGroupRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string group_id = 1;
    public static final int GROUP_ID_FIELD_NUMBER = 1;
    private java.lang.Object groupId_;
    /**
     * <code>required string group_id = 1;</code>
     */
    public boolean hasGroupId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public java.lang.String getGroupId() {
      java.lang.Object ref = groupId_;
      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();
        if (bs.isValidUtf8()) {
          groupId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated int32 to_line = 2;
    public static final int TO_LINE_FIELD_NUMBER = 2;
    private java.util.List<java.lang.Integer> toLine_;
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    public java.util.List<java.lang.Integer>
        getToLineList() {
      return toLine_;
    }
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    public int getToLineCount() {
      return toLine_.size();
    }
    /**
     * <code>repeated int32 to_line = 2;</code>
     */
    public int getToLine(int index) {
      return toLine_.get(index);
    }

    // optional .MessageContent notify_content = 3;
    public static final int NOTIFY_CONTENT_FIELD_NUMBER = 3;
    private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_;
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    public boolean hasNotifyContent() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
      return notifyContent_;
    }
    /**
     * <code>optional .MessageContent notify_content = 3;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
      return notifyContent_;
    }

    private void initFields() {
      groupId_ = "";
      toLine_ = java.util.Collections.emptyList();
      notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasGroupId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasNotifyContent()) {
        if (!getNotifyContent().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getGroupIdBytes());
      }
      for (int i = 0; i < toLine_.size(); i++) {
        output.writeInt32(2, toLine_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, notifyContent_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getGroupIdBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < toLine_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(toLine_.get(i));
        }
        size += dataSize;
        size += 1 * getToLineList().size();
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, notifyContent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.QuitGroupRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code QuitGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.QuitGroupRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_QuitGroupRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_QuitGroupRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.QuitGroupRequest.class, cn.wildfirechat.proto.WFCMessage.QuitGroupRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.QuitGroupRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getNotifyContentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        groupId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_QuitGroupRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.QuitGroupRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.QuitGroupRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.QuitGroupRequest build() {
        cn.wildfirechat.proto.WFCMessage.QuitGroupRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.QuitGroupRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.QuitGroupRequest result = new cn.wildfirechat.proto.WFCMessage.QuitGroupRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.groupId_ = groupId_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.toLine_ = toLine_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        if (notifyContentBuilder_ == null) {
          result.notifyContent_ = notifyContent_;
        } else {
          result.notifyContent_ = notifyContentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.QuitGroupRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.QuitGroupRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.QuitGroupRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.QuitGroupRequest.getDefaultInstance()) return this;
        if (other.hasGroupId()) {
          bitField0_ |= 0x00000001;
          groupId_ = other.groupId_;
          onChanged();
        }
        if (!other.toLine_.isEmpty()) {
          if (toLine_.isEmpty()) {
            toLine_ = other.toLine_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureToLineIsMutable();
            toLine_.addAll(other.toLine_);
          }
          onChanged();
        }
        if (other.hasNotifyContent()) {
          mergeNotifyContent(other.getNotifyContent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasGroupId()) {
          
          return false;
        }
        if (hasNotifyContent()) {
          if (!getNotifyContent().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.QuitGroupRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.QuitGroupRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string group_id = 1;
      private java.lang.Object groupId_ = "";
      /**
       * <code>required string group_id = 1;</code>
       */
      public boolean hasGroupId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder clearGroupId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        groupId_ = getDefaultInstance().getGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }

      // repeated int32 to_line = 2;
      private java.util.List<java.lang.Integer> toLine_ = java.util.Collections.emptyList();
      private void ensureToLineIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          toLine_ = new java.util.ArrayList<java.lang.Integer>(toLine_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public java.util.List<java.lang.Integer>
          getToLineList() {
        return java.util.Collections.unmodifiableList(toLine_);
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public int getToLineCount() {
        return toLine_.size();
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public int getToLine(int index) {
        return toLine_.get(index);
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder setToLine(
          int index, int value) {
        ensureToLineIsMutable();
        toLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder addToLine(int value) {
        ensureToLineIsMutable();
        toLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder addAllToLine(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureToLineIsMutable();
        super.addAll(values, toLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 2;</code>
       */
      public Builder clearToLine() {
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      // optional .MessageContent notify_content = 3;
      private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> notifyContentBuilder_;
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public boolean hasNotifyContent() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
        if (notifyContentBuilder_ == null) {
          return notifyContent_;
        } else {
          return notifyContentBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder setNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          notifyContent_ = value;
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder setNotifyContent(
          cn.wildfirechat.proto.WFCMessage.MessageContent.Builder builderForValue) {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = builderForValue.build();
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder mergeNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              notifyContent_ != cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) {
            notifyContent_ =
              cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder(notifyContent_).mergeFrom(value).buildPartial();
          } else {
            notifyContent_ = value;
          }
          onChanged();
        } else {
          notifyContentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public Builder clearNotifyContent() {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
          onChanged();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent.Builder getNotifyContentBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getNotifyContentFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
        if (notifyContentBuilder_ != null) {
          return notifyContentBuilder_.getMessageOrBuilder();
        } else {
          return notifyContent_;
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> 
          getNotifyContentFieldBuilder() {
        if (notifyContentBuilder_ == null) {
          notifyContentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder>(
                  notifyContent_,
                  getParentForChildren(),
                  isClean());
          notifyContent_ = null;
        }
        return notifyContentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:QuitGroupRequest)
    }

    static {
      defaultInstance = new QuitGroupRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:QuitGroupRequest)
  }

  public interface RemoveGroupMemberRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string group_id = 1;
    /**
     * <code>required string group_id = 1;</code>
     */
    boolean hasGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    java.lang.String getGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();

    // repeated string removed_member = 2;
    /**
     * <code>repeated string removed_member = 2;</code>
     */
    java.util.List<java.lang.String>
    getRemovedMemberList();
    /**
     * <code>repeated string removed_member = 2;</code>
     */
    int getRemovedMemberCount();
    /**
     * <code>repeated string removed_member = 2;</code>
     */
    java.lang.String getRemovedMember(int index);
    /**
     * <code>repeated string removed_member = 2;</code>
     */
    com.google.protobuf.ByteString
        getRemovedMemberBytes(int index);

    // repeated int32 to_line = 3;
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    java.util.List<java.lang.Integer> getToLineList();
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    int getToLineCount();
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    int getToLine(int index);

    // optional .MessageContent notify_content = 4;
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    boolean hasNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder();
  }
  /**
   * Protobuf type {@code RemoveGroupMemberRequest}
   */
  public static final class RemoveGroupMemberRequest extends
      com.google.protobuf.GeneratedMessage
      implements RemoveGroupMemberRequestOrBuilder {
    // Use RemoveGroupMemberRequest.newBuilder() to construct.
    private RemoveGroupMemberRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private RemoveGroupMemberRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final RemoveGroupMemberRequest defaultInstance;
    public static RemoveGroupMemberRequest getDefaultInstance() {
      return defaultInstance;
    }

    public RemoveGroupMemberRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private RemoveGroupMemberRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              groupId_ = input.readBytes();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                removedMember_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              removedMember_.add(input.readBytes());
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              toLine_.add(input.readInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                toLine_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 34: {
              cn.wildfirechat.proto.WFCMessage.MessageContent.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = notifyContent_.toBuilder();
              }
              notifyContent_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.MessageContent.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(notifyContent_);
                notifyContent_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          removedMember_ = new com.google.protobuf.UnmodifiableLazyStringList(removedMember_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_RemoveGroupMemberRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_RemoveGroupMemberRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest.class, cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<RemoveGroupMemberRequest> PARSER =
        new com.google.protobuf.AbstractParser<RemoveGroupMemberRequest>() {
      public RemoveGroupMemberRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RemoveGroupMemberRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string group_id = 1;
    public static final int GROUP_ID_FIELD_NUMBER = 1;
    private java.lang.Object groupId_;
    /**
     * <code>required string group_id = 1;</code>
     */
    public boolean hasGroupId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public java.lang.String getGroupId() {
      java.lang.Object ref = groupId_;
      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();
        if (bs.isValidUtf8()) {
          groupId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated string removed_member = 2;
    public static final int REMOVED_MEMBER_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList removedMember_;
    /**
     * <code>repeated string removed_member = 2;</code>
     */
    public java.util.List<java.lang.String>
        getRemovedMemberList() {
      return removedMember_;
    }
    /**
     * <code>repeated string removed_member = 2;</code>
     */
    public int getRemovedMemberCount() {
      return removedMember_.size();
    }
    /**
     * <code>repeated string removed_member = 2;</code>
     */
    public java.lang.String getRemovedMember(int index) {
      return removedMember_.get(index);
    }
    /**
     * <code>repeated string removed_member = 2;</code>
     */
    public com.google.protobuf.ByteString
        getRemovedMemberBytes(int index) {
      return removedMember_.getByteString(index);
    }

    // repeated int32 to_line = 3;
    public static final int TO_LINE_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> toLine_;
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public java.util.List<java.lang.Integer>
        getToLineList() {
      return toLine_;
    }
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public int getToLineCount() {
      return toLine_.size();
    }
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public int getToLine(int index) {
      return toLine_.get(index);
    }

    // optional .MessageContent notify_content = 4;
    public static final int NOTIFY_CONTENT_FIELD_NUMBER = 4;
    private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_;
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public boolean hasNotifyContent() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
      return notifyContent_;
    }
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
      return notifyContent_;
    }

    private void initFields() {
      groupId_ = "";
      removedMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      toLine_ = java.util.Collections.emptyList();
      notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasGroupId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasNotifyContent()) {
        if (!getNotifyContent().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getGroupIdBytes());
      }
      for (int i = 0; i < removedMember_.size(); i++) {
        output.writeBytes(2, removedMember_.getByteString(i));
      }
      for (int i = 0; i < toLine_.size(); i++) {
        output.writeInt32(3, toLine_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(4, notifyContent_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getGroupIdBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < removedMember_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(removedMember_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getRemovedMemberList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < toLine_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(toLine_.get(i));
        }
        size += dataSize;
        size += 1 * getToLineList().size();
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, notifyContent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code RemoveGroupMemberRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_RemoveGroupMemberRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_RemoveGroupMemberRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest.class, cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getNotifyContentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        groupId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        removedMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_RemoveGroupMemberRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest build() {
        cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest result = new cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.groupId_ = groupId_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          removedMember_ = new com.google.protobuf.UnmodifiableLazyStringList(
              removedMember_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.removedMember_ = removedMember_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.toLine_ = toLine_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000002;
        }
        if (notifyContentBuilder_ == null) {
          result.notifyContent_ = notifyContent_;
        } else {
          result.notifyContent_ = notifyContentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest.getDefaultInstance()) return this;
        if (other.hasGroupId()) {
          bitField0_ |= 0x00000001;
          groupId_ = other.groupId_;
          onChanged();
        }
        if (!other.removedMember_.isEmpty()) {
          if (removedMember_.isEmpty()) {
            removedMember_ = other.removedMember_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureRemovedMemberIsMutable();
            removedMember_.addAll(other.removedMember_);
          }
          onChanged();
        }
        if (!other.toLine_.isEmpty()) {
          if (toLine_.isEmpty()) {
            toLine_ = other.toLine_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureToLineIsMutable();
            toLine_.addAll(other.toLine_);
          }
          onChanged();
        }
        if (other.hasNotifyContent()) {
          mergeNotifyContent(other.getNotifyContent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasGroupId()) {
          
          return false;
        }
        if (hasNotifyContent()) {
          if (!getNotifyContent().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.RemoveGroupMemberRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string group_id = 1;
      private java.lang.Object groupId_ = "";
      /**
       * <code>required string group_id = 1;</code>
       */
      public boolean hasGroupId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder clearGroupId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        groupId_ = getDefaultInstance().getGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }

      // repeated string removed_member = 2;
      private com.google.protobuf.LazyStringList removedMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureRemovedMemberIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          removedMember_ = new com.google.protobuf.LazyStringArrayList(removedMember_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string removed_member = 2;</code>
       */
      public java.util.List<java.lang.String>
          getRemovedMemberList() {
        return java.util.Collections.unmodifiableList(removedMember_);
      }
      /**
       * <code>repeated string removed_member = 2;</code>
       */
      public int getRemovedMemberCount() {
        return removedMember_.size();
      }
      /**
       * <code>repeated string removed_member = 2;</code>
       */
      public java.lang.String getRemovedMember(int index) {
        return removedMember_.get(index);
      }
      /**
       * <code>repeated string removed_member = 2;</code>
       */
      public com.google.protobuf.ByteString
          getRemovedMemberBytes(int index) {
        return removedMember_.getByteString(index);
      }
      /**
       * <code>repeated string removed_member = 2;</code>
       */
      public Builder setRemovedMember(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRemovedMemberIsMutable();
        removedMember_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string removed_member = 2;</code>
       */
      public Builder addRemovedMember(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRemovedMemberIsMutable();
        removedMember_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string removed_member = 2;</code>
       */
      public Builder addAllRemovedMember(
          java.lang.Iterable<java.lang.String> values) {
        ensureRemovedMemberIsMutable();
        super.addAll(values, removedMember_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string removed_member = 2;</code>
       */
      public Builder clearRemovedMember() {
        removedMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string removed_member = 2;</code>
       */
      public Builder addRemovedMemberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRemovedMemberIsMutable();
        removedMember_.add(value);
        onChanged();
        return this;
      }

      // repeated int32 to_line = 3;
      private java.util.List<java.lang.Integer> toLine_ = java.util.Collections.emptyList();
      private void ensureToLineIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = new java.util.ArrayList<java.lang.Integer>(toLine_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public java.util.List<java.lang.Integer>
          getToLineList() {
        return java.util.Collections.unmodifiableList(toLine_);
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public int getToLineCount() {
        return toLine_.size();
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public int getToLine(int index) {
        return toLine_.get(index);
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder setToLine(
          int index, int value) {
        ensureToLineIsMutable();
        toLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder addToLine(int value) {
        ensureToLineIsMutable();
        toLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder addAllToLine(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureToLineIsMutable();
        super.addAll(values, toLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder clearToLine() {
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      // optional .MessageContent notify_content = 4;
      private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> notifyContentBuilder_;
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public boolean hasNotifyContent() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
        if (notifyContentBuilder_ == null) {
          return notifyContent_;
        } else {
          return notifyContentBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder setNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          notifyContent_ = value;
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder setNotifyContent(
          cn.wildfirechat.proto.WFCMessage.MessageContent.Builder builderForValue) {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = builderForValue.build();
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder mergeNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              notifyContent_ != cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) {
            notifyContent_ =
              cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder(notifyContent_).mergeFrom(value).buildPartial();
          } else {
            notifyContent_ = value;
          }
          onChanged();
        } else {
          notifyContentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder clearNotifyContent() {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
          onChanged();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent.Builder getNotifyContentBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getNotifyContentFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
        if (notifyContentBuilder_ != null) {
          return notifyContentBuilder_.getMessageOrBuilder();
        } else {
          return notifyContent_;
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> 
          getNotifyContentFieldBuilder() {
        if (notifyContentBuilder_ == null) {
          notifyContentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder>(
                  notifyContent_,
                  getParentForChildren(),
                  isClean());
          notifyContent_ = null;
        }
        return notifyContentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:RemoveGroupMemberRequest)
    }

    static {
      defaultInstance = new RemoveGroupMemberRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:RemoveGroupMemberRequest)
  }

  public interface TransferGroupRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string group_id = 1;
    /**
     * <code>required string group_id = 1;</code>
     */
    boolean hasGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    java.lang.String getGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();

    // required string new_owner = 2;
    /**
     * <code>required string new_owner = 2;</code>
     */
    boolean hasNewOwner();
    /**
     * <code>required string new_owner = 2;</code>
     */
    java.lang.String getNewOwner();
    /**
     * <code>required string new_owner = 2;</code>
     */
    com.google.protobuf.ByteString
        getNewOwnerBytes();

    // repeated int32 to_line = 3;
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    java.util.List<java.lang.Integer> getToLineList();
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    int getToLineCount();
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    int getToLine(int index);

    // optional .MessageContent notify_content = 4;
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    boolean hasNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder();
  }
  /**
   * Protobuf type {@code TransferGroupRequest}
   */
  public static final class TransferGroupRequest extends
      com.google.protobuf.GeneratedMessage
      implements TransferGroupRequestOrBuilder {
    // Use TransferGroupRequest.newBuilder() to construct.
    private TransferGroupRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TransferGroupRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final TransferGroupRequest defaultInstance;
    public static TransferGroupRequest getDefaultInstance() {
      return defaultInstance;
    }

    public TransferGroupRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private TransferGroupRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              groupId_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              newOwner_ = input.readBytes();
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              toLine_.add(input.readInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                toLine_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 34: {
              cn.wildfirechat.proto.WFCMessage.MessageContent.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = notifyContent_.toBuilder();
              }
              notifyContent_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.MessageContent.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(notifyContent_);
                notifyContent_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_TransferGroupRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_TransferGroupRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.TransferGroupRequest.class, cn.wildfirechat.proto.WFCMessage.TransferGroupRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<TransferGroupRequest> PARSER =
        new com.google.protobuf.AbstractParser<TransferGroupRequest>() {
      public TransferGroupRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TransferGroupRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string group_id = 1;
    public static final int GROUP_ID_FIELD_NUMBER = 1;
    private java.lang.Object groupId_;
    /**
     * <code>required string group_id = 1;</code>
     */
    public boolean hasGroupId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public java.lang.String getGroupId() {
      java.lang.Object ref = groupId_;
      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();
        if (bs.isValidUtf8()) {
          groupId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string new_owner = 2;
    public static final int NEW_OWNER_FIELD_NUMBER = 2;
    private java.lang.Object newOwner_;
    /**
     * <code>required string new_owner = 2;</code>
     */
    public boolean hasNewOwner() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string new_owner = 2;</code>
     */
    public java.lang.String getNewOwner() {
      java.lang.Object ref = newOwner_;
      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();
        if (bs.isValidUtf8()) {
          newOwner_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string new_owner = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNewOwnerBytes() {
      java.lang.Object ref = newOwner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        newOwner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated int32 to_line = 3;
    public static final int TO_LINE_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> toLine_;
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public java.util.List<java.lang.Integer>
        getToLineList() {
      return toLine_;
    }
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public int getToLineCount() {
      return toLine_.size();
    }
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public int getToLine(int index) {
      return toLine_.get(index);
    }

    // optional .MessageContent notify_content = 4;
    public static final int NOTIFY_CONTENT_FIELD_NUMBER = 4;
    private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_;
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public boolean hasNotifyContent() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
      return notifyContent_;
    }
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
      return notifyContent_;
    }

    private void initFields() {
      groupId_ = "";
      newOwner_ = "";
      toLine_ = java.util.Collections.emptyList();
      notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasGroupId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNewOwner()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasNotifyContent()) {
        if (!getNotifyContent().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getGroupIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getNewOwnerBytes());
      }
      for (int i = 0; i < toLine_.size(); i++) {
        output.writeInt32(3, toLine_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(4, notifyContent_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getGroupIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getNewOwnerBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < toLine_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(toLine_.get(i));
        }
        size += dataSize;
        size += 1 * getToLineList().size();
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, notifyContent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.TransferGroupRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code TransferGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.TransferGroupRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_TransferGroupRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_TransferGroupRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.TransferGroupRequest.class, cn.wildfirechat.proto.WFCMessage.TransferGroupRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.TransferGroupRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getNotifyContentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        groupId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        newOwner_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_TransferGroupRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.TransferGroupRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.TransferGroupRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.TransferGroupRequest build() {
        cn.wildfirechat.proto.WFCMessage.TransferGroupRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.TransferGroupRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.TransferGroupRequest result = new cn.wildfirechat.proto.WFCMessage.TransferGroupRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.groupId_ = groupId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.newOwner_ = newOwner_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.toLine_ = toLine_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        if (notifyContentBuilder_ == null) {
          result.notifyContent_ = notifyContent_;
        } else {
          result.notifyContent_ = notifyContentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.TransferGroupRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.TransferGroupRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.TransferGroupRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.TransferGroupRequest.getDefaultInstance()) return this;
        if (other.hasGroupId()) {
          bitField0_ |= 0x00000001;
          groupId_ = other.groupId_;
          onChanged();
        }
        if (other.hasNewOwner()) {
          bitField0_ |= 0x00000002;
          newOwner_ = other.newOwner_;
          onChanged();
        }
        if (!other.toLine_.isEmpty()) {
          if (toLine_.isEmpty()) {
            toLine_ = other.toLine_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureToLineIsMutable();
            toLine_.addAll(other.toLine_);
          }
          onChanged();
        }
        if (other.hasNotifyContent()) {
          mergeNotifyContent(other.getNotifyContent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasGroupId()) {
          
          return false;
        }
        if (!hasNewOwner()) {
          
          return false;
        }
        if (hasNotifyContent()) {
          if (!getNotifyContent().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.TransferGroupRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.TransferGroupRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string group_id = 1;
      private java.lang.Object groupId_ = "";
      /**
       * <code>required string group_id = 1;</code>
       */
      public boolean hasGroupId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder clearGroupId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        groupId_ = getDefaultInstance().getGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }

      // required string new_owner = 2;
      private java.lang.Object newOwner_ = "";
      /**
       * <code>required string new_owner = 2;</code>
       */
      public boolean hasNewOwner() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public java.lang.String getNewOwner() {
        java.lang.Object ref = newOwner_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          newOwner_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNewOwnerBytes() {
        java.lang.Object ref = newOwner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          newOwner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public Builder setNewOwner(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        newOwner_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public Builder clearNewOwner() {
        bitField0_ = (bitField0_ & ~0x00000002);
        newOwner_ = getDefaultInstance().getNewOwner();
        onChanged();
        return this;
      }
      /**
       * <code>required string new_owner = 2;</code>
       */
      public Builder setNewOwnerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        newOwner_ = value;
        onChanged();
        return this;
      }

      // repeated int32 to_line = 3;
      private java.util.List<java.lang.Integer> toLine_ = java.util.Collections.emptyList();
      private void ensureToLineIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = new java.util.ArrayList<java.lang.Integer>(toLine_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public java.util.List<java.lang.Integer>
          getToLineList() {
        return java.util.Collections.unmodifiableList(toLine_);
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public int getToLineCount() {
        return toLine_.size();
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public int getToLine(int index) {
        return toLine_.get(index);
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder setToLine(
          int index, int value) {
        ensureToLineIsMutable();
        toLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder addToLine(int value) {
        ensureToLineIsMutable();
        toLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder addAllToLine(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureToLineIsMutable();
        super.addAll(values, toLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder clearToLine() {
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      // optional .MessageContent notify_content = 4;
      private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> notifyContentBuilder_;
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public boolean hasNotifyContent() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
        if (notifyContentBuilder_ == null) {
          return notifyContent_;
        } else {
          return notifyContentBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder setNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          notifyContent_ = value;
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder setNotifyContent(
          cn.wildfirechat.proto.WFCMessage.MessageContent.Builder builderForValue) {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = builderForValue.build();
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder mergeNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              notifyContent_ != cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) {
            notifyContent_ =
              cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder(notifyContent_).mergeFrom(value).buildPartial();
          } else {
            notifyContent_ = value;
          }
          onChanged();
        } else {
          notifyContentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder clearNotifyContent() {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
          onChanged();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent.Builder getNotifyContentBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getNotifyContentFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
        if (notifyContentBuilder_ != null) {
          return notifyContentBuilder_.getMessageOrBuilder();
        } else {
          return notifyContent_;
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> 
          getNotifyContentFieldBuilder() {
        if (notifyContentBuilder_ == null) {
          notifyContentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder>(
                  notifyContent_,
                  getParentForChildren(),
                  isClean());
          notifyContent_ = null;
        }
        return notifyContentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:TransferGroupRequest)
    }

    static {
      defaultInstance = new TransferGroupRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:TransferGroupRequest)
  }

  public interface ModifyGroupMemberAliasOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string group_id = 1;
    /**
     * <code>required string group_id = 1;</code>
     */
    boolean hasGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    java.lang.String getGroupId();
    /**
     * <code>required string group_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();

    // required string alias = 2;
    /**
     * <code>required string alias = 2;</code>
     */
    boolean hasAlias();
    /**
     * <code>required string alias = 2;</code>
     */
    java.lang.String getAlias();
    /**
     * <code>required string alias = 2;</code>
     */
    com.google.protobuf.ByteString
        getAliasBytes();

    // repeated int32 to_line = 3;
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    java.util.List<java.lang.Integer> getToLineList();
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    int getToLineCount();
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    int getToLine(int index);

    // optional .MessageContent notify_content = 4;
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    boolean hasNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent();
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder();
  }
  /**
   * Protobuf type {@code ModifyGroupMemberAlias}
   */
  public static final class ModifyGroupMemberAlias extends
      com.google.protobuf.GeneratedMessage
      implements ModifyGroupMemberAliasOrBuilder {
    // Use ModifyGroupMemberAlias.newBuilder() to construct.
    private ModifyGroupMemberAlias(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ModifyGroupMemberAlias(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ModifyGroupMemberAlias defaultInstance;
    public static ModifyGroupMemberAlias getDefaultInstance() {
      return defaultInstance;
    }

    public ModifyGroupMemberAlias getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ModifyGroupMemberAlias(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              groupId_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              alias_ = input.readBytes();
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              toLine_.add(input.readInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                toLine_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                toLine_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 34: {
              cn.wildfirechat.proto.WFCMessage.MessageContent.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = notifyContent_.toBuilder();
              }
              notifyContent_ = input.readMessage(cn.wildfirechat.proto.WFCMessage.MessageContent.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(notifyContent_);
                notifyContent_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupMemberAlias_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupMemberAlias_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias.class, cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias.Builder.class);
    }

    public static com.google.protobuf.Parser<ModifyGroupMemberAlias> PARSER =
        new com.google.protobuf.AbstractParser<ModifyGroupMemberAlias>() {
      public ModifyGroupMemberAlias parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ModifyGroupMemberAlias(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string group_id = 1;
    public static final int GROUP_ID_FIELD_NUMBER = 1;
    private java.lang.Object groupId_;
    /**
     * <code>required string group_id = 1;</code>
     */
    public boolean hasGroupId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public java.lang.String getGroupId() {
      java.lang.Object ref = groupId_;
      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();
        if (bs.isValidUtf8()) {
          groupId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string group_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string alias = 2;
    public static final int ALIAS_FIELD_NUMBER = 2;
    private java.lang.Object alias_;
    /**
     * <code>required string alias = 2;</code>
     */
    public boolean hasAlias() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string alias = 2;</code>
     */
    public java.lang.String getAlias() {
      java.lang.Object ref = alias_;
      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();
        if (bs.isValidUtf8()) {
          alias_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string alias = 2;</code>
     */
    public com.google.protobuf.ByteString
        getAliasBytes() {
      java.lang.Object ref = alias_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        alias_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated int32 to_line = 3;
    public static final int TO_LINE_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> toLine_;
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public java.util.List<java.lang.Integer>
        getToLineList() {
      return toLine_;
    }
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public int getToLineCount() {
      return toLine_.size();
    }
    /**
     * <code>repeated int32 to_line = 3;</code>
     */
    public int getToLine(int index) {
      return toLine_.get(index);
    }

    // optional .MessageContent notify_content = 4;
    public static final int NOTIFY_CONTENT_FIELD_NUMBER = 4;
    private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_;
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public boolean hasNotifyContent() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
      return notifyContent_;
    }
    /**
     * <code>optional .MessageContent notify_content = 4;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
      return notifyContent_;
    }

    private void initFields() {
      groupId_ = "";
      alias_ = "";
      toLine_ = java.util.Collections.emptyList();
      notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasGroupId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAlias()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasNotifyContent()) {
        if (!getNotifyContent().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getGroupIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getAliasBytes());
      }
      for (int i = 0; i < toLine_.size(); i++) {
        output.writeInt32(3, toLine_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(4, notifyContent_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getGroupIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getAliasBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < toLine_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(toLine_.get(i));
        }
        size += dataSize;
        size += 1 * getToLineList().size();
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, notifyContent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ModifyGroupMemberAlias}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAliasOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupMemberAlias_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupMemberAlias_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias.class, cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getNotifyContentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        groupId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        alias_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyGroupMemberAlias_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias build() {
        cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias result = new cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.groupId_ = groupId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.alias_ = alias_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = java.util.Collections.unmodifiableList(toLine_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.toLine_ = toLine_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        if (notifyContentBuilder_ == null) {
          result.notifyContent_ = notifyContent_;
        } else {
          result.notifyContent_ = notifyContentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias.getDefaultInstance()) return this;
        if (other.hasGroupId()) {
          bitField0_ |= 0x00000001;
          groupId_ = other.groupId_;
          onChanged();
        }
        if (other.hasAlias()) {
          bitField0_ |= 0x00000002;
          alias_ = other.alias_;
          onChanged();
        }
        if (!other.toLine_.isEmpty()) {
          if (toLine_.isEmpty()) {
            toLine_ = other.toLine_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureToLineIsMutable();
            toLine_.addAll(other.toLine_);
          }
          onChanged();
        }
        if (other.hasNotifyContent()) {
          mergeNotifyContent(other.getNotifyContent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasGroupId()) {
          
          return false;
        }
        if (!hasAlias()) {
          
          return false;
        }
        if (hasNotifyContent()) {
          if (!getNotifyContent().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ModifyGroupMemberAlias) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string group_id = 1;
      private java.lang.Object groupId_ = "";
      /**
       * <code>required string group_id = 1;</code>
       */
      public boolean hasGroupId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder clearGroupId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        groupId_ = getDefaultInstance().getGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>required string group_id = 1;</code>
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        groupId_ = value;
        onChanged();
        return this;
      }

      // required string alias = 2;
      private java.lang.Object alias_ = "";
      /**
       * <code>required string alias = 2;</code>
       */
      public boolean hasAlias() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string alias = 2;</code>
       */
      public java.lang.String getAlias() {
        java.lang.Object ref = alias_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          alias_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string alias = 2;</code>
       */
      public com.google.protobuf.ByteString
          getAliasBytes() {
        java.lang.Object ref = alias_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          alias_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string alias = 2;</code>
       */
      public Builder setAlias(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        alias_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string alias = 2;</code>
       */
      public Builder clearAlias() {
        bitField0_ = (bitField0_ & ~0x00000002);
        alias_ = getDefaultInstance().getAlias();
        onChanged();
        return this;
      }
      /**
       * <code>required string alias = 2;</code>
       */
      public Builder setAliasBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        alias_ = value;
        onChanged();
        return this;
      }

      // repeated int32 to_line = 3;
      private java.util.List<java.lang.Integer> toLine_ = java.util.Collections.emptyList();
      private void ensureToLineIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          toLine_ = new java.util.ArrayList<java.lang.Integer>(toLine_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public java.util.List<java.lang.Integer>
          getToLineList() {
        return java.util.Collections.unmodifiableList(toLine_);
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public int getToLineCount() {
        return toLine_.size();
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public int getToLine(int index) {
        return toLine_.get(index);
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder setToLine(
          int index, int value) {
        ensureToLineIsMutable();
        toLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder addToLine(int value) {
        ensureToLineIsMutable();
        toLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder addAllToLine(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureToLineIsMutable();
        super.addAll(values, toLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 to_line = 3;</code>
       */
      public Builder clearToLine() {
        toLine_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      // optional .MessageContent notify_content = 4;
      private cn.wildfirechat.proto.WFCMessage.MessageContent notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> notifyContentBuilder_;
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public boolean hasNotifyContent() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent getNotifyContent() {
        if (notifyContentBuilder_ == null) {
          return notifyContent_;
        } else {
          return notifyContentBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder setNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          notifyContent_ = value;
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder setNotifyContent(
          cn.wildfirechat.proto.WFCMessage.MessageContent.Builder builderForValue) {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = builderForValue.build();
          onChanged();
        } else {
          notifyContentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder mergeNotifyContent(cn.wildfirechat.proto.WFCMessage.MessageContent value) {
        if (notifyContentBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              notifyContent_ != cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance()) {
            notifyContent_ =
              cn.wildfirechat.proto.WFCMessage.MessageContent.newBuilder(notifyContent_).mergeFrom(value).buildPartial();
          } else {
            notifyContent_ = value;
          }
          onChanged();
        } else {
          notifyContentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public Builder clearNotifyContent() {
        if (notifyContentBuilder_ == null) {
          notifyContent_ = cn.wildfirechat.proto.WFCMessage.MessageContent.getDefaultInstance();
          onChanged();
        } else {
          notifyContentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContent.Builder getNotifyContentBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getNotifyContentFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder getNotifyContentOrBuilder() {
        if (notifyContentBuilder_ != null) {
          return notifyContentBuilder_.getMessageOrBuilder();
        } else {
          return notifyContent_;
        }
      }
      /**
       * <code>optional .MessageContent notify_content = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder> 
          getNotifyContentFieldBuilder() {
        if (notifyContentBuilder_ == null) {
          notifyContentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.MessageContent, cn.wildfirechat.proto.WFCMessage.MessageContent.Builder, cn.wildfirechat.proto.WFCMessage.MessageContentOrBuilder>(
                  notifyContent_,
                  getParentForChildren(),
                  isClean());
          notifyContent_ = null;
        }
        return notifyContentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:ModifyGroupMemberAlias)
    }

    static {
      defaultInstance = new ModifyGroupMemberAlias(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ModifyGroupMemberAlias)
  }

  public interface UserSettingEntryOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 scope = 1;
    /**
     * <code>required int32 scope = 1;</code>
     */
    boolean hasScope();
    /**
     * <code>required int32 scope = 1;</code>
     */
    int getScope();

    // required string key = 2;
    /**
     * <code>required string key = 2;</code>
     */
    boolean hasKey();
    /**
     * <code>required string key = 2;</code>
     */
    java.lang.String getKey();
    /**
     * <code>required string key = 2;</code>
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    // required string value = 3;
    /**
     * <code>required string value = 3;</code>
     */
    boolean hasValue();
    /**
     * <code>required string value = 3;</code>
     */
    java.lang.String getValue();
    /**
     * <code>required string value = 3;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();

    // required int64 update_dt = 4;
    /**
     * <code>required int64 update_dt = 4;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>required int64 update_dt = 4;</code>
     */
    long getUpdateDt();
  }
  /**
   * Protobuf type {@code UserSettingEntry}
   */
  public static final class UserSettingEntry extends
      com.google.protobuf.GeneratedMessage
      implements UserSettingEntryOrBuilder {
    // Use UserSettingEntry.newBuilder() to construct.
    private UserSettingEntry(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private UserSettingEntry(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final UserSettingEntry defaultInstance;
    public static UserSettingEntry getDefaultInstance() {
      return defaultInstance;
    }

    public UserSettingEntry getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private UserSettingEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              scope_ = input.readInt32();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              key_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              value_ = input.readBytes();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              updateDt_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_UserSettingEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_UserSettingEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.UserSettingEntry.class, cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder.class);
    }

    public static com.google.protobuf.Parser<UserSettingEntry> PARSER =
        new com.google.protobuf.AbstractParser<UserSettingEntry>() {
      public UserSettingEntry parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UserSettingEntry(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int32 scope = 1;
    public static final int SCOPE_FIELD_NUMBER = 1;
    private int scope_;
    /**
     * <code>required int32 scope = 1;</code>
     */
    public boolean hasScope() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 scope = 1;</code>
     */
    public int getScope() {
      return scope_;
    }

    // required string key = 2;
    public static final int KEY_FIELD_NUMBER = 2;
    private java.lang.Object key_;
    /**
     * <code>required string key = 2;</code>
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string key = 2;</code>
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      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();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string key = 2;</code>
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string value = 3;
    public static final int VALUE_FIELD_NUMBER = 3;
    private java.lang.Object value_;
    /**
     * <code>required string value = 3;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string value = 3;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      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();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string value = 3;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int64 update_dt = 4;
    public static final int UPDATE_DT_FIELD_NUMBER = 4;
    private long updateDt_;
    /**
     * <code>required int64 update_dt = 4;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required int64 update_dt = 4;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    private void initFields() {
      scope_ = 0;
      key_ = "";
      value_ = "";
      updateDt_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasScope()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasKey()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUpdateDt()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, scope_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getKeyBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getValueBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt64(4, updateDt_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, scope_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getKeyBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getValueBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, updateDt_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.UserSettingEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.UserSettingEntry prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UserSettingEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UserSettingEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UserSettingEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.UserSettingEntry.class, cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.UserSettingEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        scope_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_UserSettingEntry_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.UserSettingEntry getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.UserSettingEntry.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.UserSettingEntry build() {
        cn.wildfirechat.proto.WFCMessage.UserSettingEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.UserSettingEntry buildPartial() {
        cn.wildfirechat.proto.WFCMessage.UserSettingEntry result = new cn.wildfirechat.proto.WFCMessage.UserSettingEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.scope_ = scope_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.updateDt_ = updateDt_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.UserSettingEntry) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.UserSettingEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.UserSettingEntry other) {
        if (other == cn.wildfirechat.proto.WFCMessage.UserSettingEntry.getDefaultInstance()) return this;
        if (other.hasScope()) {
          setScope(other.getScope());
        }
        if (other.hasKey()) {
          bitField0_ |= 0x00000002;
          key_ = other.key_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000004;
          value_ = other.value_;
          onChanged();
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasScope()) {
          
          return false;
        }
        if (!hasKey()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        if (!hasUpdateDt()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.UserSettingEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.UserSettingEntry) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 scope = 1;
      private int scope_ ;
      /**
       * <code>required int32 scope = 1;</code>
       */
      public boolean hasScope() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 scope = 1;</code>
       */
      public int getScope() {
        return scope_;
      }
      /**
       * <code>required int32 scope = 1;</code>
       */
      public Builder setScope(int value) {
        bitField0_ |= 0x00000001;
        scope_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 scope = 1;</code>
       */
      public Builder clearScope() {
        bitField0_ = (bitField0_ & ~0x00000001);
        scope_ = 0;
        onChanged();
        return this;
      }

      // required string key = 2;
      private java.lang.Object key_ = "";
      /**
       * <code>required string key = 2;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string key = 2;</code>
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          key_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string key = 2;</code>
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string key = 2;</code>
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 2;</code>
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000002);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 2;</code>
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        key_ = value;
        onChanged();
        return this;
      }

      // required string value = 3;
      private java.lang.Object value_ = "";
      /**
       * <code>required string value = 3;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string value = 3;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string value = 3;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000004);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }

      // required int64 update_dt = 4;
      private long updateDt_ ;
      /**
       * <code>required int64 update_dt = 4;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required int64 update_dt = 4;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>required int64 update_dt = 4;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000008;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 update_dt = 4;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000008);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:UserSettingEntry)
    }

    static {
      defaultInstance = new UserSettingEntry(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:UserSettingEntry)
  }

  public interface ModifyUserSettingReqOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 scope = 1;
    /**
     * <code>required int32 scope = 1;</code>
     */
    boolean hasScope();
    /**
     * <code>required int32 scope = 1;</code>
     */
    int getScope();

    // required string key = 2;
    /**
     * <code>required string key = 2;</code>
     */
    boolean hasKey();
    /**
     * <code>required string key = 2;</code>
     */
    java.lang.String getKey();
    /**
     * <code>required string key = 2;</code>
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    // required string value = 3;
    /**
     * <code>required string value = 3;</code>
     */
    boolean hasValue();
    /**
     * <code>required string value = 3;</code>
     */
    java.lang.String getValue();
    /**
     * <code>required string value = 3;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code ModifyUserSettingReq}
   */
  public static final class ModifyUserSettingReq extends
      com.google.protobuf.GeneratedMessage
      implements ModifyUserSettingReqOrBuilder {
    // Use ModifyUserSettingReq.newBuilder() to construct.
    private ModifyUserSettingReq(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ModifyUserSettingReq(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ModifyUserSettingReq defaultInstance;
    public static ModifyUserSettingReq getDefaultInstance() {
      return defaultInstance;
    }

    public ModifyUserSettingReq getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ModifyUserSettingReq(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              scope_ = input.readInt32();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              key_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              value_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyUserSettingReq_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyUserSettingReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq.class, cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq.Builder.class);
    }

    public static com.google.protobuf.Parser<ModifyUserSettingReq> PARSER =
        new com.google.protobuf.AbstractParser<ModifyUserSettingReq>() {
      public ModifyUserSettingReq parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ModifyUserSettingReq(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int32 scope = 1;
    public static final int SCOPE_FIELD_NUMBER = 1;
    private int scope_;
    /**
     * <code>required int32 scope = 1;</code>
     */
    public boolean hasScope() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 scope = 1;</code>
     */
    public int getScope() {
      return scope_;
    }

    // required string key = 2;
    public static final int KEY_FIELD_NUMBER = 2;
    private java.lang.Object key_;
    /**
     * <code>required string key = 2;</code>
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string key = 2;</code>
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      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();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string key = 2;</code>
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string value = 3;
    public static final int VALUE_FIELD_NUMBER = 3;
    private java.lang.Object value_;
    /**
     * <code>required string value = 3;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string value = 3;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      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();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string value = 3;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      scope_ = 0;
      key_ = "";
      value_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasScope()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasKey()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, scope_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getKeyBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getValueBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, scope_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getKeyBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getValueBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ModifyUserSettingReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyUserSettingReq_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyUserSettingReq_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq.class, cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        scope_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ModifyUserSettingReq_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq build() {
        cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq result = new cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.scope_ = scope_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq.getDefaultInstance()) return this;
        if (other.hasScope()) {
          setScope(other.getScope());
        }
        if (other.hasKey()) {
          bitField0_ |= 0x00000002;
          key_ = other.key_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000004;
          value_ = other.value_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasScope()) {
          
          return false;
        }
        if (!hasKey()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ModifyUserSettingReq) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 scope = 1;
      private int scope_ ;
      /**
       * <code>required int32 scope = 1;</code>
       */
      public boolean hasScope() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 scope = 1;</code>
       */
      public int getScope() {
        return scope_;
      }
      /**
       * <code>required int32 scope = 1;</code>
       */
      public Builder setScope(int value) {
        bitField0_ |= 0x00000001;
        scope_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 scope = 1;</code>
       */
      public Builder clearScope() {
        bitField0_ = (bitField0_ & ~0x00000001);
        scope_ = 0;
        onChanged();
        return this;
      }

      // required string key = 2;
      private java.lang.Object key_ = "";
      /**
       * <code>required string key = 2;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string key = 2;</code>
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          key_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string key = 2;</code>
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string key = 2;</code>
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 2;</code>
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000002);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 2;</code>
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        key_ = value;
        onChanged();
        return this;
      }

      // required string value = 3;
      private java.lang.Object value_ = "";
      /**
       * <code>required string value = 3;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string value = 3;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string value = 3;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000004);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 3;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ModifyUserSettingReq)
    }

    static {
      defaultInstance = new ModifyUserSettingReq(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ModifyUserSettingReq)
  }

  public interface VersionOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int64 version = 1;
    /**
     * <code>required int64 version = 1;</code>
     */
    boolean hasVersion();
    /**
     * <code>required int64 version = 1;</code>
     */
    long getVersion();
  }
  /**
   * Protobuf type {@code Version}
   */
  public static final class Version extends
      com.google.protobuf.GeneratedMessage
      implements VersionOrBuilder {
    // Use Version.newBuilder() to construct.
    private Version(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Version(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Version defaultInstance;
    public static Version getDefaultInstance() {
      return defaultInstance;
    }

    public Version getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Version(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              version_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Version_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Version_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.Version.class, cn.wildfirechat.proto.WFCMessage.Version.Builder.class);
    }

    public static com.google.protobuf.Parser<Version> PARSER =
        new com.google.protobuf.AbstractParser<Version>() {
      public Version parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Version(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int64 version = 1;
    public static final int VERSION_FIELD_NUMBER = 1;
    private long version_;
    /**
     * <code>required int64 version = 1;</code>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int64 version = 1;</code>
     */
    public long getVersion() {
      return version_;
    }

    private void initFields() {
      version_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(1, version_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, version_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.Version parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Version parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Version parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Version parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Version parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Version parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Version parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Version parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Version parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Version parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.Version prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Version}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.VersionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Version_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Version_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.Version.class, cn.wildfirechat.proto.WFCMessage.Version.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.Version.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        version_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Version_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.Version getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.Version.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.Version build() {
        cn.wildfirechat.proto.WFCMessage.Version result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.Version buildPartial() {
        cn.wildfirechat.proto.WFCMessage.Version result = new cn.wildfirechat.proto.WFCMessage.Version(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.version_ = version_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.Version) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.Version)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.Version other) {
        if (other == cn.wildfirechat.proto.WFCMessage.Version.getDefaultInstance()) return this;
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasVersion()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.Version parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.Version) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int64 version = 1;
      private long version_ ;
      /**
       * <code>required int64 version = 1;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int64 version = 1;</code>
       */
      public long getVersion() {
        return version_;
      }
      /**
       * <code>required int64 version = 1;</code>
       */
      public Builder setVersion(long value) {
        bitField0_ |= 0x00000001;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 version = 1;</code>
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        version_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Version)
    }

    static {
      defaultInstance = new Version(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Version)
  }

  public interface GetUserSettingResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .UserSettingEntry entry = 1;
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.UserSettingEntry> 
        getEntryList();
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.UserSettingEntry getEntry(int index);
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    int getEntryCount();
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder> 
        getEntryOrBuilderList();
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder getEntryOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code GetUserSettingResult}
   */
  public static final class GetUserSettingResult extends
      com.google.protobuf.GeneratedMessage
      implements GetUserSettingResultOrBuilder {
    // Use GetUserSettingResult.newBuilder() to construct.
    private GetUserSettingResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetUserSettingResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetUserSettingResult defaultInstance;
    public static GetUserSettingResult getDefaultInstance() {
      return defaultInstance;
    }

    public GetUserSettingResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetUserSettingResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.UserSettingEntry>();
                mutable_bitField0_ |= 0x00000001;
              }
              entry_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.UserSettingEntry.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetUserSettingResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetUserSettingResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GetUserSettingResult.class, cn.wildfirechat.proto.WFCMessage.GetUserSettingResult.Builder.class);
    }

    public static com.google.protobuf.Parser<GetUserSettingResult> PARSER =
        new com.google.protobuf.AbstractParser<GetUserSettingResult>() {
      public GetUserSettingResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetUserSettingResult(input, extensionRegistry);
      }
    };

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

    // repeated .UserSettingEntry entry = 1;
    public static final int ENTRY_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.UserSettingEntry> entry_;
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.UserSettingEntry> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.UserSettingEntry getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .UserSettingEntry entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    private void initFields() {
      entry_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getEntryCount(); i++) {
        if (!getEntry(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < entry_.size(); i++) {
        output.writeMessage(1, entry_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < entry_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, entry_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GetUserSettingResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetUserSettingResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GetUserSettingResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetUserSettingResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetUserSettingResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GetUserSettingResult.class, cn.wildfirechat.proto.WFCMessage.GetUserSettingResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GetUserSettingResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getEntryFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          entryBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetUserSettingResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GetUserSettingResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GetUserSettingResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GetUserSettingResult build() {
        cn.wildfirechat.proto.WFCMessage.GetUserSettingResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GetUserSettingResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GetUserSettingResult result = new cn.wildfirechat.proto.WFCMessage.GetUserSettingResult(this);
        int from_bitField0_ = bitField0_;
        if (entryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            entry_ = java.util.Collections.unmodifiableList(entry_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.entry_ = entry_;
        } else {
          result.entry_ = entryBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GetUserSettingResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GetUserSettingResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GetUserSettingResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GetUserSettingResult.getDefaultInstance()) return this;
        if (entryBuilder_ == null) {
          if (!other.entry_.isEmpty()) {
            if (entry_.isEmpty()) {
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEntryIsMutable();
              entry_.addAll(other.entry_);
            }
            onChanged();
          }
        } else {
          if (!other.entry_.isEmpty()) {
            if (entryBuilder_.isEmpty()) {
              entryBuilder_.dispose();
              entryBuilder_ = null;
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
              entryBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEntryFieldBuilder() : null;
            } else {
              entryBuilder_.addAllMessages(other.entry_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GetUserSettingResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GetUserSettingResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .UserSettingEntry entry = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.UserSettingEntry> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.UserSettingEntry>(entry_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.UserSettingEntry, cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder, cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder> entryBuilder_;

      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.UserSettingEntry> getEntryList() {
        if (entryBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entry_);
        } else {
          return entryBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public int getEntryCount() {
        if (entryBuilder_ == null) {
          return entry_.size();
        } else {
          return entryBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserSettingEntry getEntry(int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);
        } else {
          return entryBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.UserSettingEntry value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.set(index, value);
          onChanged();
        } else {
          entryBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.set(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public Builder addEntry(cn.wildfirechat.proto.WFCMessage.UserSettingEntry value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(value);
          onChanged();
        } else {
          entryBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.UserSettingEntry value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(index, value);
          onChanged();
        } else {
          entryBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public Builder addEntry(
          cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.UserSettingEntry> values) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          super.addAll(values, entry_);
          onChanged();
        } else {
          entryBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public Builder clearEntry() {
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          entryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public Builder removeEntry(int index) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.remove(index);
          onChanged();
        } else {
          entryBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder getEntryBuilder(
          int index) {
        return getEntryFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder getEntryOrBuilder(
          int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);  } else {
          return entryBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder> 
           getEntryOrBuilderList() {
        if (entryBuilder_ != null) {
          return entryBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entry_);
        }
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder addEntryBuilder() {
        return getEntryFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.UserSettingEntry.getDefaultInstance());
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder addEntryBuilder(
          int index) {
        return getEntryFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.UserSettingEntry.getDefaultInstance());
      }
      /**
       * <code>repeated .UserSettingEntry entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder> 
           getEntryBuilderList() {
        return getEntryFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.UserSettingEntry, cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder, cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder> 
          getEntryFieldBuilder() {
        if (entryBuilder_ == null) {
          entryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.UserSettingEntry, cn.wildfirechat.proto.WFCMessage.UserSettingEntry.Builder, cn.wildfirechat.proto.WFCMessage.UserSettingEntryOrBuilder>(
                  entry_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        return entryBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GetUserSettingResult)
    }

    static {
      defaultInstance = new GetUserSettingResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetUserSettingResult)
  }

  public interface FriendOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string uid = 1;
    /**
     * <code>required string uid = 1;</code>
     */
    boolean hasUid();
    /**
     * <code>required string uid = 1;</code>
     */
    java.lang.String getUid();
    /**
     * <code>required string uid = 1;</code>
     */
    com.google.protobuf.ByteString
        getUidBytes();

    // required int32 state = 2;
    /**
     * <code>required int32 state = 2;</code>
     */
    boolean hasState();
    /**
     * <code>required int32 state = 2;</code>
     */
    int getState();

    // required int64 update_dt = 3;
    /**
     * <code>required int64 update_dt = 3;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>required int64 update_dt = 3;</code>
     */
    long getUpdateDt();
  }
  /**
   * Protobuf type {@code Friend}
   */
  public static final class Friend extends
      com.google.protobuf.GeneratedMessage
      implements FriendOrBuilder {
    // Use Friend.newBuilder() to construct.
    private Friend(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Friend(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Friend defaultInstance;
    public static Friend getDefaultInstance() {
      return defaultInstance;
    }

    public Friend getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Friend(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              uid_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              state_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              updateDt_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Friend_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_Friend_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.Friend.class, cn.wildfirechat.proto.WFCMessage.Friend.Builder.class);
    }

    public static com.google.protobuf.Parser<Friend> PARSER =
        new com.google.protobuf.AbstractParser<Friend>() {
      public Friend parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Friend(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string uid = 1;
    public static final int UID_FIELD_NUMBER = 1;
    private java.lang.Object uid_;
    /**
     * <code>required string uid = 1;</code>
     */
    public boolean hasUid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public java.lang.String getUid() {
      java.lang.Object ref = uid_;
      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();
        if (bs.isValidUtf8()) {
          uid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUidBytes() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 state = 2;
    public static final int STATE_FIELD_NUMBER = 2;
    private int state_;
    /**
     * <code>required int32 state = 2;</code>
     */
    public boolean hasState() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 state = 2;</code>
     */
    public int getState() {
      return state_;
    }

    // required int64 update_dt = 3;
    public static final int UPDATE_DT_FIELD_NUMBER = 3;
    private long updateDt_;
    /**
     * <code>required int64 update_dt = 3;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int64 update_dt = 3;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    private void initFields() {
      uid_ = "";
      state_ = 0;
      updateDt_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasState()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUpdateDt()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, state_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt64(3, updateDt_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, state_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, updateDt_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.Friend parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Friend parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Friend parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.Friend parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Friend parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Friend parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Friend parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Friend parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.Friend parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.Friend parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.Friend prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Friend}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.FriendOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Friend_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Friend_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.Friend.class, cn.wildfirechat.proto.WFCMessage.Friend.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.Friend.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        state_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_Friend_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.Friend getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.Friend.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.Friend build() {
        cn.wildfirechat.proto.WFCMessage.Friend result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.Friend buildPartial() {
        cn.wildfirechat.proto.WFCMessage.Friend result = new cn.wildfirechat.proto.WFCMessage.Friend(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uid_ = uid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.state_ = state_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.updateDt_ = updateDt_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.Friend) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.Friend)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.Friend other) {
        if (other == cn.wildfirechat.proto.WFCMessage.Friend.getDefaultInstance()) return this;
        if (other.hasUid()) {
          bitField0_ |= 0x00000001;
          uid_ = other.uid_;
          onChanged();
        }
        if (other.hasState()) {
          setState(other.getState());
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUid()) {
          
          return false;
        }
        if (!hasState()) {
          
          return false;
        }
        if (!hasUpdateDt()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.Friend parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.Friend) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string uid = 1;
      private java.lang.Object uid_ = "";
      /**
       * <code>required string uid = 1;</code>
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public java.lang.String getUid() {
        java.lang.Object ref = uid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          uid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUidBytes() {
        java.lang.Object ref = uid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder clearUid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uid_ = getDefaultInstance().getUid();
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }

      // required int32 state = 2;
      private int state_ ;
      /**
       * <code>required int32 state = 2;</code>
       */
      public boolean hasState() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 state = 2;</code>
       */
      public int getState() {
        return state_;
      }
      /**
       * <code>required int32 state = 2;</code>
       */
      public Builder setState(int value) {
        bitField0_ |= 0x00000002;
        state_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 state = 2;</code>
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000002);
        state_ = 0;
        onChanged();
        return this;
      }

      // required int64 update_dt = 3;
      private long updateDt_ ;
      /**
       * <code>required int64 update_dt = 3;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int64 update_dt = 3;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>required int64 update_dt = 3;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000004;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 update_dt = 3;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000004);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Friend)
    }

    static {
      defaultInstance = new Friend(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Friend)
  }

  public interface GetFriendsResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .Friend entry = 1;
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.Friend> 
        getEntryList();
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.Friend getEntry(int index);
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    int getEntryCount();
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.FriendOrBuilder> 
        getEntryOrBuilderList();
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.FriendOrBuilder getEntryOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code GetFriendsResult}
   */
  public static final class GetFriendsResult extends
      com.google.protobuf.GeneratedMessage
      implements GetFriendsResultOrBuilder {
    // Use GetFriendsResult.newBuilder() to construct.
    private GetFriendsResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetFriendsResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetFriendsResult defaultInstance;
    public static GetFriendsResult getDefaultInstance() {
      return defaultInstance;
    }

    public GetFriendsResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetFriendsResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.Friend>();
                mutable_bitField0_ |= 0x00000001;
              }
              entry_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.Friend.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendsResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendsResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GetFriendsResult.class, cn.wildfirechat.proto.WFCMessage.GetFriendsResult.Builder.class);
    }

    public static com.google.protobuf.Parser<GetFriendsResult> PARSER =
        new com.google.protobuf.AbstractParser<GetFriendsResult>() {
      public GetFriendsResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetFriendsResult(input, extensionRegistry);
      }
    };

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

    // repeated .Friend entry = 1;
    public static final int ENTRY_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.Friend> entry_;
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.Friend> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.FriendOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.Friend getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .Friend entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.FriendOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    private void initFields() {
      entry_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getEntryCount(); i++) {
        if (!getEntry(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < entry_.size(); i++) {
        output.writeMessage(1, entry_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < entry_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, entry_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendsResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GetFriendsResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetFriendsResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GetFriendsResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendsResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendsResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GetFriendsResult.class, cn.wildfirechat.proto.WFCMessage.GetFriendsResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GetFriendsResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getEntryFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          entryBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendsResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GetFriendsResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GetFriendsResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GetFriendsResult build() {
        cn.wildfirechat.proto.WFCMessage.GetFriendsResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GetFriendsResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GetFriendsResult result = new cn.wildfirechat.proto.WFCMessage.GetFriendsResult(this);
        int from_bitField0_ = bitField0_;
        if (entryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            entry_ = java.util.Collections.unmodifiableList(entry_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.entry_ = entry_;
        } else {
          result.entry_ = entryBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GetFriendsResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GetFriendsResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GetFriendsResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GetFriendsResult.getDefaultInstance()) return this;
        if (entryBuilder_ == null) {
          if (!other.entry_.isEmpty()) {
            if (entry_.isEmpty()) {
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEntryIsMutable();
              entry_.addAll(other.entry_);
            }
            onChanged();
          }
        } else {
          if (!other.entry_.isEmpty()) {
            if (entryBuilder_.isEmpty()) {
              entryBuilder_.dispose();
              entryBuilder_ = null;
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
              entryBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEntryFieldBuilder() : null;
            } else {
              entryBuilder_.addAllMessages(other.entry_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GetFriendsResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GetFriendsResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .Friend entry = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.Friend> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.Friend>(entry_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Friend, cn.wildfirechat.proto.WFCMessage.Friend.Builder, cn.wildfirechat.proto.WFCMessage.FriendOrBuilder> entryBuilder_;

      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.Friend> getEntryList() {
        if (entryBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entry_);
        } else {
          return entryBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public int getEntryCount() {
        if (entryBuilder_ == null) {
          return entry_.size();
        } else {
          return entryBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Friend getEntry(int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);
        } else {
          return entryBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Friend value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.set(index, value);
          onChanged();
        } else {
          entryBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Friend.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.set(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public Builder addEntry(cn.wildfirechat.proto.WFCMessage.Friend value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(value);
          onChanged();
        } else {
          entryBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Friend value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(index, value);
          onChanged();
        } else {
          entryBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public Builder addEntry(
          cn.wildfirechat.proto.WFCMessage.Friend.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.Friend.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.Friend> values) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          super.addAll(values, entry_);
          onChanged();
        } else {
          entryBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public Builder clearEntry() {
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          entryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public Builder removeEntry(int index) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.remove(index);
          onChanged();
        } else {
          entryBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Friend.Builder getEntryBuilder(
          int index) {
        return getEntryFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.FriendOrBuilder getEntryOrBuilder(
          int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);  } else {
          return entryBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.FriendOrBuilder> 
           getEntryOrBuilderList() {
        if (entryBuilder_ != null) {
          return entryBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entry_);
        }
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Friend.Builder addEntryBuilder() {
        return getEntryFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.Friend.getDefaultInstance());
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.Friend.Builder addEntryBuilder(
          int index) {
        return getEntryFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.Friend.getDefaultInstance());
      }
      /**
       * <code>repeated .Friend entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.Friend.Builder> 
           getEntryBuilderList() {
        return getEntryFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.Friend, cn.wildfirechat.proto.WFCMessage.Friend.Builder, cn.wildfirechat.proto.WFCMessage.FriendOrBuilder> 
          getEntryFieldBuilder() {
        if (entryBuilder_ == null) {
          entryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.Friend, cn.wildfirechat.proto.WFCMessage.Friend.Builder, cn.wildfirechat.proto.WFCMessage.FriendOrBuilder>(
                  entry_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        return entryBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GetFriendsResult)
    }

    static {
      defaultInstance = new GetFriendsResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetFriendsResult)
  }

  public interface GetFriendRequestResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .FriendRequest entry = 1;
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.FriendRequest> 
        getEntryList();
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.FriendRequest getEntry(int index);
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    int getEntryCount();
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder> 
        getEntryOrBuilderList();
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder getEntryOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code GetFriendRequestResult}
   */
  public static final class GetFriendRequestResult extends
      com.google.protobuf.GeneratedMessage
      implements GetFriendRequestResultOrBuilder {
    // Use GetFriendRequestResult.newBuilder() to construct.
    private GetFriendRequestResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetFriendRequestResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetFriendRequestResult defaultInstance;
    public static GetFriendRequestResult getDefaultInstance() {
      return defaultInstance;
    }

    public GetFriendRequestResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetFriendRequestResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.FriendRequest>();
                mutable_bitField0_ |= 0x00000001;
              }
              entry_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.FriendRequest.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendRequestResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendRequestResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult.class, cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult.Builder.class);
    }

    public static com.google.protobuf.Parser<GetFriendRequestResult> PARSER =
        new com.google.protobuf.AbstractParser<GetFriendRequestResult>() {
      public GetFriendRequestResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetFriendRequestResult(input, extensionRegistry);
      }
    };

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

    // repeated .FriendRequest entry = 1;
    public static final int ENTRY_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.FriendRequest> entry_;
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.FriendRequest> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.FriendRequest getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .FriendRequest entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    private void initFields() {
      entry_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getEntryCount(); i++) {
        if (!getEntry(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < entry_.size(); i++) {
        output.writeMessage(1, entry_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < entry_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, entry_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetFriendRequestResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GetFriendRequestResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendRequestResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendRequestResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult.class, cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getEntryFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          entryBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetFriendRequestResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult build() {
        cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult result = new cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult(this);
        int from_bitField0_ = bitField0_;
        if (entryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            entry_ = java.util.Collections.unmodifiableList(entry_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.entry_ = entry_;
        } else {
          result.entry_ = entryBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult.getDefaultInstance()) return this;
        if (entryBuilder_ == null) {
          if (!other.entry_.isEmpty()) {
            if (entry_.isEmpty()) {
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEntryIsMutable();
              entry_.addAll(other.entry_);
            }
            onChanged();
          }
        } else {
          if (!other.entry_.isEmpty()) {
            if (entryBuilder_.isEmpty()) {
              entryBuilder_.dispose();
              entryBuilder_ = null;
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
              entryBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEntryFieldBuilder() : null;
            } else {
              entryBuilder_.addAllMessages(other.entry_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GetFriendRequestResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .FriendRequest entry = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.FriendRequest> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.FriendRequest>(entry_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.FriendRequest, cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder, cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder> entryBuilder_;

      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.FriendRequest> getEntryList() {
        if (entryBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entry_);
        } else {
          return entryBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public int getEntryCount() {
        if (entryBuilder_ == null) {
          return entry_.size();
        } else {
          return entryBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.FriendRequest getEntry(int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);
        } else {
          return entryBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.FriendRequest value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.set(index, value);
          onChanged();
        } else {
          entryBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.set(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public Builder addEntry(cn.wildfirechat.proto.WFCMessage.FriendRequest value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(value);
          onChanged();
        } else {
          entryBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.FriendRequest value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(index, value);
          onChanged();
        } else {
          entryBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public Builder addEntry(
          cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.FriendRequest> values) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          super.addAll(values, entry_);
          onChanged();
        } else {
          entryBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public Builder clearEntry() {
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          entryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public Builder removeEntry(int index) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.remove(index);
          onChanged();
        } else {
          entryBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder getEntryBuilder(
          int index) {
        return getEntryFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder getEntryOrBuilder(
          int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);  } else {
          return entryBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder> 
           getEntryOrBuilderList() {
        if (entryBuilder_ != null) {
          return entryBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entry_);
        }
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder addEntryBuilder() {
        return getEntryFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.FriendRequest.getDefaultInstance());
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder addEntryBuilder(
          int index) {
        return getEntryFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.FriendRequest.getDefaultInstance());
      }
      /**
       * <code>repeated .FriendRequest entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder> 
           getEntryBuilderList() {
        return getEntryFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.FriendRequest, cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder, cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder> 
          getEntryFieldBuilder() {
        if (entryBuilder_ == null) {
          entryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.FriendRequest, cn.wildfirechat.proto.WFCMessage.FriendRequest.Builder, cn.wildfirechat.proto.WFCMessage.FriendRequestOrBuilder>(
                  entry_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        return entryBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GetFriendRequestResult)
    }

    static {
      defaultInstance = new GetFriendRequestResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetFriendRequestResult)
  }

  public interface ConnectAckPayloadOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional int64 msg_head = 1;
    /**
     * <code>optional int64 msg_head = 1;</code>
     */
    boolean hasMsgHead();
    /**
     * <code>optional int64 msg_head = 1;</code>
     */
    long getMsgHead();

    // optional int64 friend_head = 2;
    /**
     * <code>optional int64 friend_head = 2;</code>
     */
    boolean hasFriendHead();
    /**
     * <code>optional int64 friend_head = 2;</code>
     */
    long getFriendHead();

    // optional int64 friend_rq_head = 3;
    /**
     * <code>optional int64 friend_rq_head = 3;</code>
     */
    boolean hasFriendRqHead();
    /**
     * <code>optional int64 friend_rq_head = 3;</code>
     */
    long getFriendRqHead();

    // optional int64 setting_head = 4;
    /**
     * <code>optional int64 setting_head = 4;</code>
     */
    boolean hasSettingHead();
    /**
     * <code>optional int64 setting_head = 4;</code>
     */
    long getSettingHead();

    // optional string node_addr = 5;
    /**
     * <code>optional string node_addr = 5;</code>
     */
    boolean hasNodeAddr();
    /**
     * <code>optional string node_addr = 5;</code>
     */
    java.lang.String getNodeAddr();
    /**
     * <code>optional string node_addr = 5;</code>
     */
    com.google.protobuf.ByteString
        getNodeAddrBytes();

    // optional int32 node_port = 6;
    /**
     * <code>optional int32 node_port = 6;</code>
     */
    boolean hasNodePort();
    /**
     * <code>optional int32 node_port = 6;</code>
     */
    int getNodePort();

    // optional int64 server_time = 7;
    /**
     * <code>optional int64 server_time = 7;</code>
     */
    boolean hasServerTime();
    /**
     * <code>optional int64 server_time = 7;</code>
     */
    long getServerTime();
  }
  /**
   * Protobuf type {@code ConnectAckPayload}
   */
  public static final class ConnectAckPayload extends
      com.google.protobuf.GeneratedMessage
      implements ConnectAckPayloadOrBuilder {
    // Use ConnectAckPayload.newBuilder() to construct.
    private ConnectAckPayload(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ConnectAckPayload(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ConnectAckPayload defaultInstance;
    public static ConnectAckPayload getDefaultInstance() {
      return defaultInstance;
    }

    public ConnectAckPayload getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectAckPayload(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              msgHead_ = input.readInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              friendHead_ = input.readInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              friendRqHead_ = input.readInt64();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              settingHead_ = input.readInt64();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              nodeAddr_ = input.readBytes();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              nodePort_ = input.readInt32();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              serverTime_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ConnectAckPayload_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ConnectAckPayload_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ConnectAckPayload.class, cn.wildfirechat.proto.WFCMessage.ConnectAckPayload.Builder.class);
    }

    public static com.google.protobuf.Parser<ConnectAckPayload> PARSER =
        new com.google.protobuf.AbstractParser<ConnectAckPayload>() {
      public ConnectAckPayload parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ConnectAckPayload(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // optional int64 msg_head = 1;
    public static final int MSG_HEAD_FIELD_NUMBER = 1;
    private long msgHead_;
    /**
     * <code>optional int64 msg_head = 1;</code>
     */
    public boolean hasMsgHead() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int64 msg_head = 1;</code>
     */
    public long getMsgHead() {
      return msgHead_;
    }

    // optional int64 friend_head = 2;
    public static final int FRIEND_HEAD_FIELD_NUMBER = 2;
    private long friendHead_;
    /**
     * <code>optional int64 friend_head = 2;</code>
     */
    public boolean hasFriendHead() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int64 friend_head = 2;</code>
     */
    public long getFriendHead() {
      return friendHead_;
    }

    // optional int64 friend_rq_head = 3;
    public static final int FRIEND_RQ_HEAD_FIELD_NUMBER = 3;
    private long friendRqHead_;
    /**
     * <code>optional int64 friend_rq_head = 3;</code>
     */
    public boolean hasFriendRqHead() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int64 friend_rq_head = 3;</code>
     */
    public long getFriendRqHead() {
      return friendRqHead_;
    }

    // optional int64 setting_head = 4;
    public static final int SETTING_HEAD_FIELD_NUMBER = 4;
    private long settingHead_;
    /**
     * <code>optional int64 setting_head = 4;</code>
     */
    public boolean hasSettingHead() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int64 setting_head = 4;</code>
     */
    public long getSettingHead() {
      return settingHead_;
    }

    // optional string node_addr = 5;
    public static final int NODE_ADDR_FIELD_NUMBER = 5;
    private java.lang.Object nodeAddr_;
    /**
     * <code>optional string node_addr = 5;</code>
     */
    public boolean hasNodeAddr() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional string node_addr = 5;</code>
     */
    public java.lang.String getNodeAddr() {
      java.lang.Object ref = nodeAddr_;
      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();
        if (bs.isValidUtf8()) {
          nodeAddr_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string node_addr = 5;</code>
     */
    public com.google.protobuf.ByteString
        getNodeAddrBytes() {
      java.lang.Object ref = nodeAddr_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nodeAddr_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 node_port = 6;
    public static final int NODE_PORT_FIELD_NUMBER = 6;
    private int nodePort_;
    /**
     * <code>optional int32 node_port = 6;</code>
     */
    public boolean hasNodePort() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int32 node_port = 6;</code>
     */
    public int getNodePort() {
      return nodePort_;
    }

    // optional int64 server_time = 7;
    public static final int SERVER_TIME_FIELD_NUMBER = 7;
    private long serverTime_;
    /**
     * <code>optional int64 server_time = 7;</code>
     */
    public boolean hasServerTime() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional int64 server_time = 7;</code>
     */
    public long getServerTime() {
      return serverTime_;
    }

    private void initFields() {
      msgHead_ = 0L;
      friendHead_ = 0L;
      friendRqHead_ = 0L;
      settingHead_ = 0L;
      nodeAddr_ = "";
      nodePort_ = 0;
      serverTime_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(1, msgHead_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, friendHead_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt64(3, friendRqHead_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt64(4, settingHead_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getNodeAddrBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(6, nodePort_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt64(7, serverTime_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, msgHead_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, friendHead_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, friendRqHead_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, settingHead_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getNodeAddrBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, nodePort_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, serverTime_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ConnectAckPayload prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ConnectAckPayload}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ConnectAckPayloadOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ConnectAckPayload_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ConnectAckPayload_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ConnectAckPayload.class, cn.wildfirechat.proto.WFCMessage.ConnectAckPayload.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ConnectAckPayload.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        msgHead_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        friendHead_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        friendRqHead_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        settingHead_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        nodeAddr_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        nodePort_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        serverTime_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ConnectAckPayload_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ConnectAckPayload getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ConnectAckPayload.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ConnectAckPayload build() {
        cn.wildfirechat.proto.WFCMessage.ConnectAckPayload result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ConnectAckPayload buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ConnectAckPayload result = new cn.wildfirechat.proto.WFCMessage.ConnectAckPayload(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.msgHead_ = msgHead_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.friendHead_ = friendHead_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.friendRqHead_ = friendRqHead_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.settingHead_ = settingHead_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.nodeAddr_ = nodeAddr_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.nodePort_ = nodePort_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.serverTime_ = serverTime_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ConnectAckPayload) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ConnectAckPayload)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ConnectAckPayload other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ConnectAckPayload.getDefaultInstance()) return this;
        if (other.hasMsgHead()) {
          setMsgHead(other.getMsgHead());
        }
        if (other.hasFriendHead()) {
          setFriendHead(other.getFriendHead());
        }
        if (other.hasFriendRqHead()) {
          setFriendRqHead(other.getFriendRqHead());
        }
        if (other.hasSettingHead()) {
          setSettingHead(other.getSettingHead());
        }
        if (other.hasNodeAddr()) {
          bitField0_ |= 0x00000010;
          nodeAddr_ = other.nodeAddr_;
          onChanged();
        }
        if (other.hasNodePort()) {
          setNodePort(other.getNodePort());
        }
        if (other.hasServerTime()) {
          setServerTime(other.getServerTime());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ConnectAckPayload parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ConnectAckPayload) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int64 msg_head = 1;
      private long msgHead_ ;
      /**
       * <code>optional int64 msg_head = 1;</code>
       */
      public boolean hasMsgHead() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int64 msg_head = 1;</code>
       */
      public long getMsgHead() {
        return msgHead_;
      }
      /**
       * <code>optional int64 msg_head = 1;</code>
       */
      public Builder setMsgHead(long value) {
        bitField0_ |= 0x00000001;
        msgHead_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 msg_head = 1;</code>
       */
      public Builder clearMsgHead() {
        bitField0_ = (bitField0_ & ~0x00000001);
        msgHead_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 friend_head = 2;
      private long friendHead_ ;
      /**
       * <code>optional int64 friend_head = 2;</code>
       */
      public boolean hasFriendHead() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int64 friend_head = 2;</code>
       */
      public long getFriendHead() {
        return friendHead_;
      }
      /**
       * <code>optional int64 friend_head = 2;</code>
       */
      public Builder setFriendHead(long value) {
        bitField0_ |= 0x00000002;
        friendHead_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 friend_head = 2;</code>
       */
      public Builder clearFriendHead() {
        bitField0_ = (bitField0_ & ~0x00000002);
        friendHead_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 friend_rq_head = 3;
      private long friendRqHead_ ;
      /**
       * <code>optional int64 friend_rq_head = 3;</code>
       */
      public boolean hasFriendRqHead() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int64 friend_rq_head = 3;</code>
       */
      public long getFriendRqHead() {
        return friendRqHead_;
      }
      /**
       * <code>optional int64 friend_rq_head = 3;</code>
       */
      public Builder setFriendRqHead(long value) {
        bitField0_ |= 0x00000004;
        friendRqHead_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 friend_rq_head = 3;</code>
       */
      public Builder clearFriendRqHead() {
        bitField0_ = (bitField0_ & ~0x00000004);
        friendRqHead_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 setting_head = 4;
      private long settingHead_ ;
      /**
       * <code>optional int64 setting_head = 4;</code>
       */
      public boolean hasSettingHead() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int64 setting_head = 4;</code>
       */
      public long getSettingHead() {
        return settingHead_;
      }
      /**
       * <code>optional int64 setting_head = 4;</code>
       */
      public Builder setSettingHead(long value) {
        bitField0_ |= 0x00000008;
        settingHead_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 setting_head = 4;</code>
       */
      public Builder clearSettingHead() {
        bitField0_ = (bitField0_ & ~0x00000008);
        settingHead_ = 0L;
        onChanged();
        return this;
      }

      // optional string node_addr = 5;
      private java.lang.Object nodeAddr_ = "";
      /**
       * <code>optional string node_addr = 5;</code>
       */
      public boolean hasNodeAddr() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional string node_addr = 5;</code>
       */
      public java.lang.String getNodeAddr() {
        java.lang.Object ref = nodeAddr_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          nodeAddr_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string node_addr = 5;</code>
       */
      public com.google.protobuf.ByteString
          getNodeAddrBytes() {
        java.lang.Object ref = nodeAddr_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nodeAddr_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string node_addr = 5;</code>
       */
      public Builder setNodeAddr(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        nodeAddr_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string node_addr = 5;</code>
       */
      public Builder clearNodeAddr() {
        bitField0_ = (bitField0_ & ~0x00000010);
        nodeAddr_ = getDefaultInstance().getNodeAddr();
        onChanged();
        return this;
      }
      /**
       * <code>optional string node_addr = 5;</code>
       */
      public Builder setNodeAddrBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        nodeAddr_ = value;
        onChanged();
        return this;
      }

      // optional int32 node_port = 6;
      private int nodePort_ ;
      /**
       * <code>optional int32 node_port = 6;</code>
       */
      public boolean hasNodePort() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int32 node_port = 6;</code>
       */
      public int getNodePort() {
        return nodePort_;
      }
      /**
       * <code>optional int32 node_port = 6;</code>
       */
      public Builder setNodePort(int value) {
        bitField0_ |= 0x00000020;
        nodePort_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 node_port = 6;</code>
       */
      public Builder clearNodePort() {
        bitField0_ = (bitField0_ & ~0x00000020);
        nodePort_ = 0;
        onChanged();
        return this;
      }

      // optional int64 server_time = 7;
      private long serverTime_ ;
      /**
       * <code>optional int64 server_time = 7;</code>
       */
      public boolean hasServerTime() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional int64 server_time = 7;</code>
       */
      public long getServerTime() {
        return serverTime_;
      }
      /**
       * <code>optional int64 server_time = 7;</code>
       */
      public Builder setServerTime(long value) {
        bitField0_ |= 0x00000040;
        serverTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 server_time = 7;</code>
       */
      public Builder clearServerTime() {
        bitField0_ = (bitField0_ & ~0x00000040);
        serverTime_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ConnectAckPayload)
    }

    static {
      defaultInstance = new ConnectAckPayload(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ConnectAckPayload)
  }

  public interface IMHttpWrapperOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string token = 1;
    /**
     * <code>required string token = 1;</code>
     */
    boolean hasToken();
    /**
     * <code>required string token = 1;</code>
     */
    java.lang.String getToken();
    /**
     * <code>required string token = 1;</code>
     */
    com.google.protobuf.ByteString
        getTokenBytes();

    // required string client_id = 2;
    /**
     * <code>required string client_id = 2;</code>
     */
    boolean hasClientId();
    /**
     * <code>required string client_id = 2;</code>
     */
    java.lang.String getClientId();
    /**
     * <code>required string client_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getClientIdBytes();

    // required string request = 3;
    /**
     * <code>required string request = 3;</code>
     */
    boolean hasRequest();
    /**
     * <code>required string request = 3;</code>
     */
    java.lang.String getRequest();
    /**
     * <code>required string request = 3;</code>
     */
    com.google.protobuf.ByteString
        getRequestBytes();

    // optional bytes data = 4;
    /**
     * <code>optional bytes data = 4;</code>
     */
    boolean hasData();
    /**
     * <code>optional bytes data = 4;</code>
     */
    com.google.protobuf.ByteString getData();
  }
  /**
   * Protobuf type {@code IMHttpWrapper}
   */
  public static final class IMHttpWrapper extends
      com.google.protobuf.GeneratedMessage
      implements IMHttpWrapperOrBuilder {
    // Use IMHttpWrapper.newBuilder() to construct.
    private IMHttpWrapper(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IMHttpWrapper(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IMHttpWrapper defaultInstance;
    public static IMHttpWrapper getDefaultInstance() {
      return defaultInstance;
    }

    public IMHttpWrapper getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IMHttpWrapper(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              token_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              clientId_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              request_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              data_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_IMHttpWrapper_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_IMHttpWrapper_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.IMHttpWrapper.class, cn.wildfirechat.proto.WFCMessage.IMHttpWrapper.Builder.class);
    }

    public static com.google.protobuf.Parser<IMHttpWrapper> PARSER =
        new com.google.protobuf.AbstractParser<IMHttpWrapper>() {
      public IMHttpWrapper parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IMHttpWrapper(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string token = 1;
    public static final int TOKEN_FIELD_NUMBER = 1;
    private java.lang.Object token_;
    /**
     * <code>required string token = 1;</code>
     */
    public boolean hasToken() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string token = 1;</code>
     */
    public java.lang.String getToken() {
      java.lang.Object ref = token_;
      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();
        if (bs.isValidUtf8()) {
          token_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string token = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTokenBytes() {
      java.lang.Object ref = token_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        token_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string client_id = 2;
    public static final int CLIENT_ID_FIELD_NUMBER = 2;
    private java.lang.Object clientId_;
    /**
     * <code>required string client_id = 2;</code>
     */
    public boolean hasClientId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string client_id = 2;</code>
     */
    public java.lang.String getClientId() {
      java.lang.Object ref = clientId_;
      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();
        if (bs.isValidUtf8()) {
          clientId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string client_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getClientIdBytes() {
      java.lang.Object ref = clientId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        clientId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string request = 3;
    public static final int REQUEST_FIELD_NUMBER = 3;
    private java.lang.Object request_;
    /**
     * <code>required string request = 3;</code>
     */
    public boolean hasRequest() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string request = 3;</code>
     */
    public java.lang.String getRequest() {
      java.lang.Object ref = request_;
      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();
        if (bs.isValidUtf8()) {
          request_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string request = 3;</code>
     */
    public com.google.protobuf.ByteString
        getRequestBytes() {
      java.lang.Object ref = request_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        request_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional bytes data = 4;
    public static final int DATA_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString data_;
    /**
     * <code>optional bytes data = 4;</code>
     */
    public boolean hasData() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional bytes data = 4;</code>
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }

    private void initFields() {
      token_ = "";
      clientId_ = "";
      request_ = "";
      data_ = com.google.protobuf.ByteString.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasToken()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasClientId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRequest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getTokenBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getClientIdBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getRequestBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, data_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getTokenBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getClientIdBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getRequestBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, data_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.IMHttpWrapper prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IMHttpWrapper}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.IMHttpWrapperOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_IMHttpWrapper_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_IMHttpWrapper_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.IMHttpWrapper.class, cn.wildfirechat.proto.WFCMessage.IMHttpWrapper.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.IMHttpWrapper.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        token_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        clientId_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        request_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        data_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_IMHttpWrapper_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.IMHttpWrapper getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.IMHttpWrapper.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.IMHttpWrapper build() {
        cn.wildfirechat.proto.WFCMessage.IMHttpWrapper result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.IMHttpWrapper buildPartial() {
        cn.wildfirechat.proto.WFCMessage.IMHttpWrapper result = new cn.wildfirechat.proto.WFCMessage.IMHttpWrapper(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.token_ = token_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.clientId_ = clientId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.request_ = request_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.data_ = data_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.IMHttpWrapper) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.IMHttpWrapper)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.IMHttpWrapper other) {
        if (other == cn.wildfirechat.proto.WFCMessage.IMHttpWrapper.getDefaultInstance()) return this;
        if (other.hasToken()) {
          bitField0_ |= 0x00000001;
          token_ = other.token_;
          onChanged();
        }
        if (other.hasClientId()) {
          bitField0_ |= 0x00000002;
          clientId_ = other.clientId_;
          onChanged();
        }
        if (other.hasRequest()) {
          bitField0_ |= 0x00000004;
          request_ = other.request_;
          onChanged();
        }
        if (other.hasData()) {
          setData(other.getData());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasToken()) {
          
          return false;
        }
        if (!hasClientId()) {
          
          return false;
        }
        if (!hasRequest()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.IMHttpWrapper parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.IMHttpWrapper) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string token = 1;
      private java.lang.Object token_ = "";
      /**
       * <code>required string token = 1;</code>
       */
      public boolean hasToken() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string token = 1;</code>
       */
      public java.lang.String getToken() {
        java.lang.Object ref = token_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          token_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string token = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTokenBytes() {
        java.lang.Object ref = token_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          token_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string token = 1;</code>
       */
      public Builder setToken(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        token_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string token = 1;</code>
       */
      public Builder clearToken() {
        bitField0_ = (bitField0_ & ~0x00000001);
        token_ = getDefaultInstance().getToken();
        onChanged();
        return this;
      }
      /**
       * <code>required string token = 1;</code>
       */
      public Builder setTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        token_ = value;
        onChanged();
        return this;
      }

      // required string client_id = 2;
      private java.lang.Object clientId_ = "";
      /**
       * <code>required string client_id = 2;</code>
       */
      public boolean hasClientId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public java.lang.String getClientId() {
        java.lang.Object ref = clientId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          clientId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getClientIdBytes() {
        java.lang.Object ref = clientId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public Builder setClientId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        clientId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public Builder clearClientId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        clientId_ = getDefaultInstance().getClientId();
        onChanged();
        return this;
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public Builder setClientIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        clientId_ = value;
        onChanged();
        return this;
      }

      // required string request = 3;
      private java.lang.Object request_ = "";
      /**
       * <code>required string request = 3;</code>
       */
      public boolean hasRequest() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string request = 3;</code>
       */
      public java.lang.String getRequest() {
        java.lang.Object ref = request_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          request_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string request = 3;</code>
       */
      public com.google.protobuf.ByteString
          getRequestBytes() {
        java.lang.Object ref = request_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          request_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string request = 3;</code>
       */
      public Builder setRequest(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        request_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string request = 3;</code>
       */
      public Builder clearRequest() {
        bitField0_ = (bitField0_ & ~0x00000004);
        request_ = getDefaultInstance().getRequest();
        onChanged();
        return this;
      }
      /**
       * <code>required string request = 3;</code>
       */
      public Builder setRequestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        request_ = value;
        onChanged();
        return this;
      }

      // optional bytes data = 4;
      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes data = 4;</code>
       */
      public boolean hasData() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional bytes data = 4;</code>
       */
      public com.google.protobuf.ByteString getData() {
        return data_;
      }
      /**
       * <code>optional bytes data = 4;</code>
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        data_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes data = 4;</code>
       */
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000008);
        data_ = getDefaultInstance().getData();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IMHttpWrapper)
    }

    static {
      defaultInstance = new IMHttpWrapper(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IMHttpWrapper)
  }

  public interface SearchUserRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string keyword = 1;
    /**
     * <code>required string keyword = 1;</code>
     */
    boolean hasKeyword();
    /**
     * <code>required string keyword = 1;</code>
     */
    java.lang.String getKeyword();
    /**
     * <code>required string keyword = 1;</code>
     */
    com.google.protobuf.ByteString
        getKeywordBytes();

    // optional int32 fuzzy = 2;
    /**
     * <code>optional int32 fuzzy = 2;</code>
     */
    boolean hasFuzzy();
    /**
     * <code>optional int32 fuzzy = 2;</code>
     */
    int getFuzzy();

    // optional int32 page = 3;
    /**
     * <code>optional int32 page = 3;</code>
     */
    boolean hasPage();
    /**
     * <code>optional int32 page = 3;</code>
     */
    int getPage();
  }
  /**
   * Protobuf type {@code SearchUserRequest}
   */
  public static final class SearchUserRequest extends
      com.google.protobuf.GeneratedMessage
      implements SearchUserRequestOrBuilder {
    // Use SearchUserRequest.newBuilder() to construct.
    private SearchUserRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SearchUserRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SearchUserRequest defaultInstance;
    public static SearchUserRequest getDefaultInstance() {
      return defaultInstance;
    }

    public SearchUserRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SearchUserRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              keyword_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              fuzzy_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              page_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.SearchUserRequest.class, cn.wildfirechat.proto.WFCMessage.SearchUserRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<SearchUserRequest> PARSER =
        new com.google.protobuf.AbstractParser<SearchUserRequest>() {
      public SearchUserRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SearchUserRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string keyword = 1;
    public static final int KEYWORD_FIELD_NUMBER = 1;
    private java.lang.Object keyword_;
    /**
     * <code>required string keyword = 1;</code>
     */
    public boolean hasKeyword() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string keyword = 1;</code>
     */
    public java.lang.String getKeyword() {
      java.lang.Object ref = keyword_;
      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();
        if (bs.isValidUtf8()) {
          keyword_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string keyword = 1;</code>
     */
    public com.google.protobuf.ByteString
        getKeywordBytes() {
      java.lang.Object ref = keyword_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        keyword_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 fuzzy = 2;
    public static final int FUZZY_FIELD_NUMBER = 2;
    private int fuzzy_;
    /**
     * <code>optional int32 fuzzy = 2;</code>
     */
    public boolean hasFuzzy() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 fuzzy = 2;</code>
     */
    public int getFuzzy() {
      return fuzzy_;
    }

    // optional int32 page = 3;
    public static final int PAGE_FIELD_NUMBER = 3;
    private int page_;
    /**
     * <code>optional int32 page = 3;</code>
     */
    public boolean hasPage() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int32 page = 3;</code>
     */
    public int getPage() {
      return page_;
    }

    private void initFields() {
      keyword_ = "";
      fuzzy_ = 0;
      page_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasKeyword()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getKeywordBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, fuzzy_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, page_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getKeywordBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, fuzzy_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, page_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.SearchUserRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SearchUserRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.SearchUserRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.SearchUserRequest.class, cn.wildfirechat.proto.WFCMessage.SearchUserRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.SearchUserRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        keyword_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        fuzzy_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        page_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.SearchUserRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.SearchUserRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.SearchUserRequest build() {
        cn.wildfirechat.proto.WFCMessage.SearchUserRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.SearchUserRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.SearchUserRequest result = new cn.wildfirechat.proto.WFCMessage.SearchUserRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.keyword_ = keyword_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.fuzzy_ = fuzzy_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.page_ = page_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.SearchUserRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.SearchUserRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.SearchUserRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.SearchUserRequest.getDefaultInstance()) return this;
        if (other.hasKeyword()) {
          bitField0_ |= 0x00000001;
          keyword_ = other.keyword_;
          onChanged();
        }
        if (other.hasFuzzy()) {
          setFuzzy(other.getFuzzy());
        }
        if (other.hasPage()) {
          setPage(other.getPage());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasKeyword()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.SearchUserRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.SearchUserRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string keyword = 1;
      private java.lang.Object keyword_ = "";
      /**
       * <code>required string keyword = 1;</code>
       */
      public boolean hasKeyword() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string keyword = 1;</code>
       */
      public java.lang.String getKeyword() {
        java.lang.Object ref = keyword_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          keyword_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string keyword = 1;</code>
       */
      public com.google.protobuf.ByteString
          getKeywordBytes() {
        java.lang.Object ref = keyword_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          keyword_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string keyword = 1;</code>
       */
      public Builder setKeyword(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        keyword_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string keyword = 1;</code>
       */
      public Builder clearKeyword() {
        bitField0_ = (bitField0_ & ~0x00000001);
        keyword_ = getDefaultInstance().getKeyword();
        onChanged();
        return this;
      }
      /**
       * <code>required string keyword = 1;</code>
       */
      public Builder setKeywordBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        keyword_ = value;
        onChanged();
        return this;
      }

      // optional int32 fuzzy = 2;
      private int fuzzy_ ;
      /**
       * <code>optional int32 fuzzy = 2;</code>
       */
      public boolean hasFuzzy() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 fuzzy = 2;</code>
       */
      public int getFuzzy() {
        return fuzzy_;
      }
      /**
       * <code>optional int32 fuzzy = 2;</code>
       */
      public Builder setFuzzy(int value) {
        bitField0_ |= 0x00000002;
        fuzzy_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 fuzzy = 2;</code>
       */
      public Builder clearFuzzy() {
        bitField0_ = (bitField0_ & ~0x00000002);
        fuzzy_ = 0;
        onChanged();
        return this;
      }

      // optional int32 page = 3;
      private int page_ ;
      /**
       * <code>optional int32 page = 3;</code>
       */
      public boolean hasPage() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 page = 3;</code>
       */
      public int getPage() {
        return page_;
      }
      /**
       * <code>optional int32 page = 3;</code>
       */
      public Builder setPage(int value) {
        bitField0_ |= 0x00000004;
        page_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 page = 3;</code>
       */
      public Builder clearPage() {
        bitField0_ = (bitField0_ & ~0x00000004);
        page_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:SearchUserRequest)
    }

    static {
      defaultInstance = new SearchUserRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:SearchUserRequest)
  }

  public interface SearchUserResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .User entry = 1;
    /**
     * <code>repeated .User entry = 1;</code>
     */
    java.util.List<cn.wildfirechat.proto.WFCMessage.User> 
        getEntryList();
    /**
     * <code>repeated .User entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.User getEntry(int index);
    /**
     * <code>repeated .User entry = 1;</code>
     */
    int getEntryCount();
    /**
     * <code>repeated .User entry = 1;</code>
     */
    java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserOrBuilder> 
        getEntryOrBuilderList();
    /**
     * <code>repeated .User entry = 1;</code>
     */
    cn.wildfirechat.proto.WFCMessage.UserOrBuilder getEntryOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code SearchUserResult}
   */
  public static final class SearchUserResult extends
      com.google.protobuf.GeneratedMessage
      implements SearchUserResultOrBuilder {
    // Use SearchUserResult.newBuilder() to construct.
    private SearchUserResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SearchUserResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SearchUserResult defaultInstance;
    public static SearchUserResult getDefaultInstance() {
      return defaultInstance;
    }

    public SearchUserResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SearchUserResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.User>();
                mutable_bitField0_ |= 0x00000001;
              }
              entry_.add(input.readMessage(cn.wildfirechat.proto.WFCMessage.User.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.SearchUserResult.class, cn.wildfirechat.proto.WFCMessage.SearchUserResult.Builder.class);
    }

    public static com.google.protobuf.Parser<SearchUserResult> PARSER =
        new com.google.protobuf.AbstractParser<SearchUserResult>() {
      public SearchUserResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SearchUserResult(input, extensionRegistry);
      }
    };

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

    // repeated .User entry = 1;
    public static final int ENTRY_FIELD_NUMBER = 1;
    private java.util.List<cn.wildfirechat.proto.WFCMessage.User> entry_;
    /**
     * <code>repeated .User entry = 1;</code>
     */
    public java.util.List<cn.wildfirechat.proto.WFCMessage.User> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .User entry = 1;</code>
     */
    public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .User entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .User entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.User getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .User entry = 1;</code>
     */
    public cn.wildfirechat.proto.WFCMessage.UserOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    private void initFields() {
      entry_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getEntryCount(); i++) {
        if (!getEntry(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < entry_.size(); i++) {
        output.writeMessage(1, entry_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < entry_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, entry_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.SearchUserResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.SearchUserResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SearchUserResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.SearchUserResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.SearchUserResult.class, cn.wildfirechat.proto.WFCMessage.SearchUserResult.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.SearchUserResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getEntryFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          entryBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_SearchUserResult_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.SearchUserResult getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.SearchUserResult.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.SearchUserResult build() {
        cn.wildfirechat.proto.WFCMessage.SearchUserResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.SearchUserResult buildPartial() {
        cn.wildfirechat.proto.WFCMessage.SearchUserResult result = new cn.wildfirechat.proto.WFCMessage.SearchUserResult(this);
        int from_bitField0_ = bitField0_;
        if (entryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            entry_ = java.util.Collections.unmodifiableList(entry_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.entry_ = entry_;
        } else {
          result.entry_ = entryBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.SearchUserResult) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.SearchUserResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.SearchUserResult other) {
        if (other == cn.wildfirechat.proto.WFCMessage.SearchUserResult.getDefaultInstance()) return this;
        if (entryBuilder_ == null) {
          if (!other.entry_.isEmpty()) {
            if (entry_.isEmpty()) {
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEntryIsMutable();
              entry_.addAll(other.entry_);
            }
            onChanged();
          }
        } else {
          if (!other.entry_.isEmpty()) {
            if (entryBuilder_.isEmpty()) {
              entryBuilder_.dispose();
              entryBuilder_ = null;
              entry_ = other.entry_;
              bitField0_ = (bitField0_ & ~0x00000001);
              entryBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEntryFieldBuilder() : null;
            } else {
              entryBuilder_.addAllMessages(other.entry_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.SearchUserResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.SearchUserResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .User entry = 1;
      private java.util.List<cn.wildfirechat.proto.WFCMessage.User> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new java.util.ArrayList<cn.wildfirechat.proto.WFCMessage.User>(entry_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.User, cn.wildfirechat.proto.WFCMessage.User.Builder, cn.wildfirechat.proto.WFCMessage.UserOrBuilder> entryBuilder_;

      /**
       * <code>repeated .User entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.User> getEntryList() {
        if (entryBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entry_);
        } else {
          return entryBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public int getEntryCount() {
        if (entryBuilder_ == null) {
          return entry_.size();
        } else {
          return entryBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.User getEntry(int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);
        } else {
          return entryBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.User value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.set(index, value);
          onChanged();
        } else {
          entryBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public Builder setEntry(
          int index, cn.wildfirechat.proto.WFCMessage.User.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.set(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public Builder addEntry(cn.wildfirechat.proto.WFCMessage.User value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(value);
          onChanged();
        } else {
          entryBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.User value) {
        if (entryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntryIsMutable();
          entry_.add(index, value);
          onChanged();
        } else {
          entryBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public Builder addEntry(
          cn.wildfirechat.proto.WFCMessage.User.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public Builder addEntry(
          int index, cn.wildfirechat.proto.WFCMessage.User.Builder builderForValue) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.add(index, builderForValue.build());
          onChanged();
        } else {
          entryBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends cn.wildfirechat.proto.WFCMessage.User> values) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          super.addAll(values, entry_);
          onChanged();
        } else {
          entryBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public Builder clearEntry() {
        if (entryBuilder_ == null) {
          entry_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          entryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public Builder removeEntry(int index) {
        if (entryBuilder_ == null) {
          ensureEntryIsMutable();
          entry_.remove(index);
          onChanged();
        } else {
          entryBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.User.Builder getEntryBuilder(
          int index) {
        return getEntryFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.UserOrBuilder getEntryOrBuilder(
          int index) {
        if (entryBuilder_ == null) {
          return entry_.get(index);  } else {
          return entryBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public java.util.List<? extends cn.wildfirechat.proto.WFCMessage.UserOrBuilder> 
           getEntryOrBuilderList() {
        if (entryBuilder_ != null) {
          return entryBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entry_);
        }
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.User.Builder addEntryBuilder() {
        return getEntryFieldBuilder().addBuilder(
            cn.wildfirechat.proto.WFCMessage.User.getDefaultInstance());
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public cn.wildfirechat.proto.WFCMessage.User.Builder addEntryBuilder(
          int index) {
        return getEntryFieldBuilder().addBuilder(
            index, cn.wildfirechat.proto.WFCMessage.User.getDefaultInstance());
      }
      /**
       * <code>repeated .User entry = 1;</code>
       */
      public java.util.List<cn.wildfirechat.proto.WFCMessage.User.Builder> 
           getEntryBuilderList() {
        return getEntryFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          cn.wildfirechat.proto.WFCMessage.User, cn.wildfirechat.proto.WFCMessage.User.Builder, cn.wildfirechat.proto.WFCMessage.UserOrBuilder> 
          getEntryFieldBuilder() {
        if (entryBuilder_ == null) {
          entryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              cn.wildfirechat.proto.WFCMessage.User, cn.wildfirechat.proto.WFCMessage.User.Builder, cn.wildfirechat.proto.WFCMessage.UserOrBuilder>(
                  entry_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        return entryBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:SearchUserResult)
    }

    static {
      defaultInstance = new SearchUserResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:SearchUserResult)
  }

  public interface GetChatroomInfoRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string chatroom_id = 1;
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    boolean hasChatroomId();
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    java.lang.String getChatroomId();
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getChatroomIdBytes();

    // optional int64 update_dt = 2;
    /**
     * <code>optional int64 update_dt = 2;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>optional int64 update_dt = 2;</code>
     */
    long getUpdateDt();
  }
  /**
   * Protobuf type {@code GetChatroomInfoRequest}
   */
  public static final class GetChatroomInfoRequest extends
      com.google.protobuf.GeneratedMessage
      implements GetChatroomInfoRequestOrBuilder {
    // Use GetChatroomInfoRequest.newBuilder() to construct.
    private GetChatroomInfoRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetChatroomInfoRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetChatroomInfoRequest defaultInstance;
    public static GetChatroomInfoRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GetChatroomInfoRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetChatroomInfoRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              chatroomId_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              updateDt_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomInfoRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomInfoRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest.class, cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<GetChatroomInfoRequest> PARSER =
        new com.google.protobuf.AbstractParser<GetChatroomInfoRequest>() {
      public GetChatroomInfoRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetChatroomInfoRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string chatroom_id = 1;
    public static final int CHATROOM_ID_FIELD_NUMBER = 1;
    private java.lang.Object chatroomId_;
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    public boolean hasChatroomId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    public java.lang.String getChatroomId() {
      java.lang.Object ref = chatroomId_;
      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();
        if (bs.isValidUtf8()) {
          chatroomId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getChatroomIdBytes() {
      java.lang.Object ref = chatroomId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        chatroomId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 update_dt = 2;
    public static final int UPDATE_DT_FIELD_NUMBER = 2;
    private long updateDt_;
    /**
     * <code>optional int64 update_dt = 2;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int64 update_dt = 2;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    private void initFields() {
      chatroomId_ = "";
      updateDt_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasChatroomId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getChatroomIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, updateDt_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getChatroomIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, updateDt_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetChatroomInfoRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomInfoRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomInfoRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest.class, cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        chatroomId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomInfoRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest build() {
        cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest result = new cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.chatroomId_ = chatroomId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.updateDt_ = updateDt_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest.getDefaultInstance()) return this;
        if (other.hasChatroomId()) {
          bitField0_ |= 0x00000001;
          chatroomId_ = other.chatroomId_;
          onChanged();
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasChatroomId()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GetChatroomInfoRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string chatroom_id = 1;
      private java.lang.Object chatroomId_ = "";
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public boolean hasChatroomId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public java.lang.String getChatroomId() {
        java.lang.Object ref = chatroomId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          chatroomId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getChatroomIdBytes() {
        java.lang.Object ref = chatroomId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          chatroomId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public Builder setChatroomId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        chatroomId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public Builder clearChatroomId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        chatroomId_ = getDefaultInstance().getChatroomId();
        onChanged();
        return this;
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public Builder setChatroomIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        chatroomId_ = value;
        onChanged();
        return this;
      }

      // optional int64 update_dt = 2;
      private long updateDt_ ;
      /**
       * <code>optional int64 update_dt = 2;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int64 update_dt = 2;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>optional int64 update_dt = 2;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000002;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 update_dt = 2;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000002);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetChatroomInfoRequest)
    }

    static {
      defaultInstance = new GetChatroomInfoRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetChatroomInfoRequest)
  }

  public interface ChatroomInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string title = 1;
    /**
     * <code>required string title = 1;</code>
     */
    boolean hasTitle();
    /**
     * <code>required string title = 1;</code>
     */
    java.lang.String getTitle();
    /**
     * <code>required string title = 1;</code>
     */
    com.google.protobuf.ByteString
        getTitleBytes();

    // optional string desc = 2;
    /**
     * <code>optional string desc = 2;</code>
     */
    boolean hasDesc();
    /**
     * <code>optional string desc = 2;</code>
     */
    java.lang.String getDesc();
    /**
     * <code>optional string desc = 2;</code>
     */
    com.google.protobuf.ByteString
        getDescBytes();

    // optional string portrait = 3;
    /**
     * <code>optional string portrait = 3;</code>
     */
    boolean hasPortrait();
    /**
     * <code>optional string portrait = 3;</code>
     */
    java.lang.String getPortrait();
    /**
     * <code>optional string portrait = 3;</code>
     */
    com.google.protobuf.ByteString
        getPortraitBytes();

    // optional int32 member_count = 4;
    /**
     * <code>optional int32 member_count = 4;</code>
     */
    boolean hasMemberCount();
    /**
     * <code>optional int32 member_count = 4;</code>
     */
    int getMemberCount();

    // optional int64 create_dt = 5;
    /**
     * <code>optional int64 create_dt = 5;</code>
     */
    boolean hasCreateDt();
    /**
     * <code>optional int64 create_dt = 5;</code>
     */
    long getCreateDt();

    // optional int64 update_dt = 6;
    /**
     * <code>optional int64 update_dt = 6;</code>
     */
    boolean hasUpdateDt();
    /**
     * <code>optional int64 update_dt = 6;</code>
     */
    long getUpdateDt();

    // optional string extra = 7;
    /**
     * <code>optional string extra = 7;</code>
     */
    boolean hasExtra();
    /**
     * <code>optional string extra = 7;</code>
     */
    java.lang.String getExtra();
    /**
     * <code>optional string extra = 7;</code>
     */
    com.google.protobuf.ByteString
        getExtraBytes();

    // optional int32 state = 8;
    /**
     * <code>optional int32 state = 8;</code>
     */
    boolean hasState();
    /**
     * <code>optional int32 state = 8;</code>
     */
    int getState();
  }
  /**
   * Protobuf type {@code ChatroomInfo}
   */
  public static final class ChatroomInfo extends
      com.google.protobuf.GeneratedMessage
      implements ChatroomInfoOrBuilder {
    // Use ChatroomInfo.newBuilder() to construct.
    private ChatroomInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ChatroomInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ChatroomInfo defaultInstance;
    public static ChatroomInfo getDefaultInstance() {
      return defaultInstance;
    }

    public ChatroomInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ChatroomInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              title_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              desc_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              portrait_ = input.readBytes();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              memberCount_ = input.readInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              createDt_ = input.readInt64();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              updateDt_ = input.readInt64();
              break;
            }
            case 58: {
              bitField0_ |= 0x00000040;
              extra_ = input.readBytes();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              state_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ChatroomInfo.class, cn.wildfirechat.proto.WFCMessage.ChatroomInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<ChatroomInfo> PARSER =
        new com.google.protobuf.AbstractParser<ChatroomInfo>() {
      public ChatroomInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ChatroomInfo(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string title = 1;
    public static final int TITLE_FIELD_NUMBER = 1;
    private java.lang.Object title_;
    /**
     * <code>required string title = 1;</code>
     */
    public boolean hasTitle() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string title = 1;</code>
     */
    public java.lang.String getTitle() {
      java.lang.Object ref = title_;
      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();
        if (bs.isValidUtf8()) {
          title_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string title = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTitleBytes() {
      java.lang.Object ref = title_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        title_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string desc = 2;
    public static final int DESC_FIELD_NUMBER = 2;
    private java.lang.Object desc_;
    /**
     * <code>optional string desc = 2;</code>
     */
    public boolean hasDesc() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string desc = 2;</code>
     */
    public java.lang.String getDesc() {
      java.lang.Object ref = desc_;
      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();
        if (bs.isValidUtf8()) {
          desc_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string desc = 2;</code>
     */
    public com.google.protobuf.ByteString
        getDescBytes() {
      java.lang.Object ref = desc_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        desc_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string portrait = 3;
    public static final int PORTRAIT_FIELD_NUMBER = 3;
    private java.lang.Object portrait_;
    /**
     * <code>optional string portrait = 3;</code>
     */
    public boolean hasPortrait() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string portrait = 3;</code>
     */
    public java.lang.String getPortrait() {
      java.lang.Object ref = portrait_;
      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();
        if (bs.isValidUtf8()) {
          portrait_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string portrait = 3;</code>
     */
    public com.google.protobuf.ByteString
        getPortraitBytes() {
      java.lang.Object ref = portrait_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        portrait_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 member_count = 4;
    public static final int MEMBER_COUNT_FIELD_NUMBER = 4;
    private int memberCount_;
    /**
     * <code>optional int32 member_count = 4;</code>
     */
    public boolean hasMemberCount() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 member_count = 4;</code>
     */
    public int getMemberCount() {
      return memberCount_;
    }

    // optional int64 create_dt = 5;
    public static final int CREATE_DT_FIELD_NUMBER = 5;
    private long createDt_;
    /**
     * <code>optional int64 create_dt = 5;</code>
     */
    public boolean hasCreateDt() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int64 create_dt = 5;</code>
     */
    public long getCreateDt() {
      return createDt_;
    }

    // optional int64 update_dt = 6;
    public static final int UPDATE_DT_FIELD_NUMBER = 6;
    private long updateDt_;
    /**
     * <code>optional int64 update_dt = 6;</code>
     */
    public boolean hasUpdateDt() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int64 update_dt = 6;</code>
     */
    public long getUpdateDt() {
      return updateDt_;
    }

    // optional string extra = 7;
    public static final int EXTRA_FIELD_NUMBER = 7;
    private java.lang.Object extra_;
    /**
     * <code>optional string extra = 7;</code>
     */
    public boolean hasExtra() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional string extra = 7;</code>
     */
    public java.lang.String getExtra() {
      java.lang.Object ref = extra_;
      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();
        if (bs.isValidUtf8()) {
          extra_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string extra = 7;</code>
     */
    public com.google.protobuf.ByteString
        getExtraBytes() {
      java.lang.Object ref = extra_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        extra_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 state = 8;
    public static final int STATE_FIELD_NUMBER = 8;
    private int state_;
    /**
     * <code>optional int32 state = 8;</code>
     */
    public boolean hasState() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional int32 state = 8;</code>
     */
    public int getState() {
      return state_;
    }

    private void initFields() {
      title_ = "";
      desc_ = "";
      portrait_ = "";
      memberCount_ = 0;
      createDt_ = 0L;
      updateDt_ = 0L;
      extra_ = "";
      state_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasTitle()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getTitleBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getDescBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getPortraitBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, memberCount_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt64(5, createDt_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt64(6, updateDt_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(7, getExtraBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeInt32(8, state_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getTitleBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getDescBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getPortraitBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, memberCount_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, createDt_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, updateDt_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getExtraBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, state_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ChatroomInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ChatroomInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ChatroomInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ChatroomInfo.class, cn.wildfirechat.proto.WFCMessage.ChatroomInfo.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ChatroomInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        title_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        desc_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        portrait_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        memberCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        createDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        updateDt_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000020);
        extra_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        state_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomInfo_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ChatroomInfo getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ChatroomInfo.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ChatroomInfo build() {
        cn.wildfirechat.proto.WFCMessage.ChatroomInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ChatroomInfo buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ChatroomInfo result = new cn.wildfirechat.proto.WFCMessage.ChatroomInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.title_ = title_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.desc_ = desc_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.portrait_ = portrait_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.memberCount_ = memberCount_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.createDt_ = createDt_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.updateDt_ = updateDt_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.extra_ = extra_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.state_ = state_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ChatroomInfo) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ChatroomInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ChatroomInfo other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ChatroomInfo.getDefaultInstance()) return this;
        if (other.hasTitle()) {
          bitField0_ |= 0x00000001;
          title_ = other.title_;
          onChanged();
        }
        if (other.hasDesc()) {
          bitField0_ |= 0x00000002;
          desc_ = other.desc_;
          onChanged();
        }
        if (other.hasPortrait()) {
          bitField0_ |= 0x00000004;
          portrait_ = other.portrait_;
          onChanged();
        }
        if (other.hasMemberCount()) {
          setMemberCount(other.getMemberCount());
        }
        if (other.hasCreateDt()) {
          setCreateDt(other.getCreateDt());
        }
        if (other.hasUpdateDt()) {
          setUpdateDt(other.getUpdateDt());
        }
        if (other.hasExtra()) {
          bitField0_ |= 0x00000040;
          extra_ = other.extra_;
          onChanged();
        }
        if (other.hasState()) {
          setState(other.getState());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTitle()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ChatroomInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ChatroomInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string title = 1;
      private java.lang.Object title_ = "";
      /**
       * <code>required string title = 1;</code>
       */
      public boolean hasTitle() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string title = 1;</code>
       */
      public java.lang.String getTitle() {
        java.lang.Object ref = title_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          title_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string title = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTitleBytes() {
        java.lang.Object ref = title_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          title_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string title = 1;</code>
       */
      public Builder setTitle(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        title_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string title = 1;</code>
       */
      public Builder clearTitle() {
        bitField0_ = (bitField0_ & ~0x00000001);
        title_ = getDefaultInstance().getTitle();
        onChanged();
        return this;
      }
      /**
       * <code>required string title = 1;</code>
       */
      public Builder setTitleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        title_ = value;
        onChanged();
        return this;
      }

      // optional string desc = 2;
      private java.lang.Object desc_ = "";
      /**
       * <code>optional string desc = 2;</code>
       */
      public boolean hasDesc() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string desc = 2;</code>
       */
      public java.lang.String getDesc() {
        java.lang.Object ref = desc_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          desc_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string desc = 2;</code>
       */
      public com.google.protobuf.ByteString
          getDescBytes() {
        java.lang.Object ref = desc_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          desc_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string desc = 2;</code>
       */
      public Builder setDesc(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        desc_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string desc = 2;</code>
       */
      public Builder clearDesc() {
        bitField0_ = (bitField0_ & ~0x00000002);
        desc_ = getDefaultInstance().getDesc();
        onChanged();
        return this;
      }
      /**
       * <code>optional string desc = 2;</code>
       */
      public Builder setDescBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        desc_ = value;
        onChanged();
        return this;
      }

      // optional string portrait = 3;
      private java.lang.Object portrait_ = "";
      /**
       * <code>optional string portrait = 3;</code>
       */
      public boolean hasPortrait() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public java.lang.String getPortrait() {
        java.lang.Object ref = portrait_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          portrait_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public com.google.protobuf.ByteString
          getPortraitBytes() {
        java.lang.Object ref = portrait_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          portrait_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public Builder setPortrait(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        portrait_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public Builder clearPortrait() {
        bitField0_ = (bitField0_ & ~0x00000004);
        portrait_ = getDefaultInstance().getPortrait();
        onChanged();
        return this;
      }
      /**
       * <code>optional string portrait = 3;</code>
       */
      public Builder setPortraitBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        portrait_ = value;
        onChanged();
        return this;
      }

      // optional int32 member_count = 4;
      private int memberCount_ ;
      /**
       * <code>optional int32 member_count = 4;</code>
       */
      public boolean hasMemberCount() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 member_count = 4;</code>
       */
      public int getMemberCount() {
        return memberCount_;
      }
      /**
       * <code>optional int32 member_count = 4;</code>
       */
      public Builder setMemberCount(int value) {
        bitField0_ |= 0x00000008;
        memberCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 member_count = 4;</code>
       */
      public Builder clearMemberCount() {
        bitField0_ = (bitField0_ & ~0x00000008);
        memberCount_ = 0;
        onChanged();
        return this;
      }

      // optional int64 create_dt = 5;
      private long createDt_ ;
      /**
       * <code>optional int64 create_dt = 5;</code>
       */
      public boolean hasCreateDt() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int64 create_dt = 5;</code>
       */
      public long getCreateDt() {
        return createDt_;
      }
      /**
       * <code>optional int64 create_dt = 5;</code>
       */
      public Builder setCreateDt(long value) {
        bitField0_ |= 0x00000010;
        createDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 create_dt = 5;</code>
       */
      public Builder clearCreateDt() {
        bitField0_ = (bitField0_ & ~0x00000010);
        createDt_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 update_dt = 6;
      private long updateDt_ ;
      /**
       * <code>optional int64 update_dt = 6;</code>
       */
      public boolean hasUpdateDt() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int64 update_dt = 6;</code>
       */
      public long getUpdateDt() {
        return updateDt_;
      }
      /**
       * <code>optional int64 update_dt = 6;</code>
       */
      public Builder setUpdateDt(long value) {
        bitField0_ |= 0x00000020;
        updateDt_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 update_dt = 6;</code>
       */
      public Builder clearUpdateDt() {
        bitField0_ = (bitField0_ & ~0x00000020);
        updateDt_ = 0L;
        onChanged();
        return this;
      }

      // optional string extra = 7;
      private java.lang.Object extra_ = "";
      /**
       * <code>optional string extra = 7;</code>
       */
      public boolean hasExtra() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public java.lang.String getExtra() {
        java.lang.Object ref = extra_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          extra_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public com.google.protobuf.ByteString
          getExtraBytes() {
        java.lang.Object ref = extra_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          extra_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public Builder setExtra(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        extra_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public Builder clearExtra() {
        bitField0_ = (bitField0_ & ~0x00000040);
        extra_ = getDefaultInstance().getExtra();
        onChanged();
        return this;
      }
      /**
       * <code>optional string extra = 7;</code>
       */
      public Builder setExtraBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        extra_ = value;
        onChanged();
        return this;
      }

      // optional int32 state = 8;
      private int state_ ;
      /**
       * <code>optional int32 state = 8;</code>
       */
      public boolean hasState() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int32 state = 8;</code>
       */
      public int getState() {
        return state_;
      }
      /**
       * <code>optional int32 state = 8;</code>
       */
      public Builder setState(int value) {
        bitField0_ |= 0x00000080;
        state_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 state = 8;</code>
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000080);
        state_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ChatroomInfo)
    }

    static {
      defaultInstance = new ChatroomInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ChatroomInfo)
  }

  public interface GetChatroomMemberInfoRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string chatroom_id = 1;
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    boolean hasChatroomId();
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    java.lang.String getChatroomId();
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getChatroomIdBytes();

    // optional int32 max_count = 2;
    /**
     * <code>optional int32 max_count = 2;</code>
     */
    boolean hasMaxCount();
    /**
     * <code>optional int32 max_count = 2;</code>
     */
    int getMaxCount();
  }
  /**
   * Protobuf type {@code GetChatroomMemberInfoRequest}
   */
  public static final class GetChatroomMemberInfoRequest extends
      com.google.protobuf.GeneratedMessage
      implements GetChatroomMemberInfoRequestOrBuilder {
    // Use GetChatroomMemberInfoRequest.newBuilder() to construct.
    private GetChatroomMemberInfoRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetChatroomMemberInfoRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetChatroomMemberInfoRequest defaultInstance;
    public static GetChatroomMemberInfoRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GetChatroomMemberInfoRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetChatroomMemberInfoRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              chatroomId_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              maxCount_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomMemberInfoRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomMemberInfoRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest.class, cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<GetChatroomMemberInfoRequest> PARSER =
        new com.google.protobuf.AbstractParser<GetChatroomMemberInfoRequest>() {
      public GetChatroomMemberInfoRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetChatroomMemberInfoRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string chatroom_id = 1;
    public static final int CHATROOM_ID_FIELD_NUMBER = 1;
    private java.lang.Object chatroomId_;
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    public boolean hasChatroomId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    public java.lang.String getChatroomId() {
      java.lang.Object ref = chatroomId_;
      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();
        if (bs.isValidUtf8()) {
          chatroomId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string chatroom_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getChatroomIdBytes() {
      java.lang.Object ref = chatroomId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        chatroomId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 max_count = 2;
    public static final int MAX_COUNT_FIELD_NUMBER = 2;
    private int maxCount_;
    /**
     * <code>optional int32 max_count = 2;</code>
     */
    public boolean hasMaxCount() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 max_count = 2;</code>
     */
    public int getMaxCount() {
      return maxCount_;
    }

    private void initFields() {
      chatroomId_ = "";
      maxCount_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasChatroomId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getChatroomIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, maxCount_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getChatroomIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, maxCount_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetChatroomMemberInfoRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomMemberInfoRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomMemberInfoRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest.class, cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        chatroomId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        maxCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetChatroomMemberInfoRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest build() {
        cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest result = new cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.chatroomId_ = chatroomId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.maxCount_ = maxCount_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest.getDefaultInstance()) return this;
        if (other.hasChatroomId()) {
          bitField0_ |= 0x00000001;
          chatroomId_ = other.chatroomId_;
          onChanged();
        }
        if (other.hasMaxCount()) {
          setMaxCount(other.getMaxCount());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasChatroomId()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GetChatroomMemberInfoRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string chatroom_id = 1;
      private java.lang.Object chatroomId_ = "";
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public boolean hasChatroomId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public java.lang.String getChatroomId() {
        java.lang.Object ref = chatroomId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          chatroomId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getChatroomIdBytes() {
        java.lang.Object ref = chatroomId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          chatroomId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public Builder setChatroomId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        chatroomId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public Builder clearChatroomId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        chatroomId_ = getDefaultInstance().getChatroomId();
        onChanged();
        return this;
      }
      /**
       * <code>required string chatroom_id = 1;</code>
       */
      public Builder setChatroomIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        chatroomId_ = value;
        onChanged();
        return this;
      }

      // optional int32 max_count = 2;
      private int maxCount_ ;
      /**
       * <code>optional int32 max_count = 2;</code>
       */
      public boolean hasMaxCount() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 max_count = 2;</code>
       */
      public int getMaxCount() {
        return maxCount_;
      }
      /**
       * <code>optional int32 max_count = 2;</code>
       */
      public Builder setMaxCount(int value) {
        bitField0_ |= 0x00000002;
        maxCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 max_count = 2;</code>
       */
      public Builder clearMaxCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        maxCount_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetChatroomMemberInfoRequest)
    }

    static {
      defaultInstance = new GetChatroomMemberInfoRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetChatroomMemberInfoRequest)
  }

  public interface ChatroomMemberInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional int32 member_count = 1;
    /**
     * <code>optional int32 member_count = 1;</code>
     */
    boolean hasMemberCount();
    /**
     * <code>optional int32 member_count = 1;</code>
     */
    int getMemberCount();

    // repeated string members = 2;
    /**
     * <code>repeated string members = 2;</code>
     */
    java.util.List<java.lang.String>
    getMembersList();
    /**
     * <code>repeated string members = 2;</code>
     */
    int getMembersCount();
    /**
     * <code>repeated string members = 2;</code>
     */
    java.lang.String getMembers(int index);
    /**
     * <code>repeated string members = 2;</code>
     */
    com.google.protobuf.ByteString
        getMembersBytes(int index);
  }
  /**
   * Protobuf type {@code ChatroomMemberInfo}
   */
  public static final class ChatroomMemberInfo extends
      com.google.protobuf.GeneratedMessage
      implements ChatroomMemberInfoOrBuilder {
    // Use ChatroomMemberInfo.newBuilder() to construct.
    private ChatroomMemberInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ChatroomMemberInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ChatroomMemberInfo defaultInstance;
    public static ChatroomMemberInfo getDefaultInstance() {
      return defaultInstance;
    }

    public ChatroomMemberInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ChatroomMemberInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              memberCount_ = input.readInt32();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                members_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              members_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          members_ = new com.google.protobuf.UnmodifiableLazyStringList(members_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomMemberInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomMemberInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo.class, cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<ChatroomMemberInfo> PARSER =
        new com.google.protobuf.AbstractParser<ChatroomMemberInfo>() {
      public ChatroomMemberInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ChatroomMemberInfo(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // optional int32 member_count = 1;
    public static final int MEMBER_COUNT_FIELD_NUMBER = 1;
    private int memberCount_;
    /**
     * <code>optional int32 member_count = 1;</code>
     */
    public boolean hasMemberCount() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 member_count = 1;</code>
     */
    public int getMemberCount() {
      return memberCount_;
    }

    // repeated string members = 2;
    public static final int MEMBERS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList members_;
    /**
     * <code>repeated string members = 2;</code>
     */
    public java.util.List<java.lang.String>
        getMembersList() {
      return members_;
    }
    /**
     * <code>repeated string members = 2;</code>
     */
    public int getMembersCount() {
      return members_.size();
    }
    /**
     * <code>repeated string members = 2;</code>
     */
    public java.lang.String getMembers(int index) {
      return members_.get(index);
    }
    /**
     * <code>repeated string members = 2;</code>
     */
    public com.google.protobuf.ByteString
        getMembersBytes(int index) {
      return members_.getByteString(index);
    }

    private void initFields() {
      memberCount_ = 0;
      members_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, memberCount_);
      }
      for (int i = 0; i < members_.size(); i++) {
        output.writeBytes(2, members_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, memberCount_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < members_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(members_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getMembersList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ChatroomMemberInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomMemberInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomMemberInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo.class, cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        memberCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        members_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_ChatroomMemberInfo_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo build() {
        cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo buildPartial() {
        cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo result = new cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.memberCount_ = memberCount_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          members_ = new com.google.protobuf.UnmodifiableLazyStringList(
              members_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.members_ = members_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo other) {
        if (other == cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo.getDefaultInstance()) return this;
        if (other.hasMemberCount()) {
          setMemberCount(other.getMemberCount());
        }
        if (!other.members_.isEmpty()) {
          if (members_.isEmpty()) {
            members_ = other.members_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureMembersIsMutable();
            members_.addAll(other.members_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.ChatroomMemberInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int32 member_count = 1;
      private int memberCount_ ;
      /**
       * <code>optional int32 member_count = 1;</code>
       */
      public boolean hasMemberCount() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 member_count = 1;</code>
       */
      public int getMemberCount() {
        return memberCount_;
      }
      /**
       * <code>optional int32 member_count = 1;</code>
       */
      public Builder setMemberCount(int value) {
        bitField0_ |= 0x00000001;
        memberCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 member_count = 1;</code>
       */
      public Builder clearMemberCount() {
        bitField0_ = (bitField0_ & ~0x00000001);
        memberCount_ = 0;
        onChanged();
        return this;
      }

      // repeated string members = 2;
      private com.google.protobuf.LazyStringList members_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureMembersIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          members_ = new com.google.protobuf.LazyStringArrayList(members_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string members = 2;</code>
       */
      public java.util.List<java.lang.String>
          getMembersList() {
        return java.util.Collections.unmodifiableList(members_);
      }
      /**
       * <code>repeated string members = 2;</code>
       */
      public int getMembersCount() {
        return members_.size();
      }
      /**
       * <code>repeated string members = 2;</code>
       */
      public java.lang.String getMembers(int index) {
        return members_.get(index);
      }
      /**
       * <code>repeated string members = 2;</code>
       */
      public com.google.protobuf.ByteString
          getMembersBytes(int index) {
        return members_.getByteString(index);
      }
      /**
       * <code>repeated string members = 2;</code>
       */
      public Builder setMembers(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMembersIsMutable();
        members_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string members = 2;</code>
       */
      public Builder addMembers(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMembersIsMutable();
        members_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string members = 2;</code>
       */
      public Builder addAllMembers(
          java.lang.Iterable<java.lang.String> values) {
        ensureMembersIsMutable();
        super.addAll(values, members_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string members = 2;</code>
       */
      public Builder clearMembers() {
        members_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string members = 2;</code>
       */
      public Builder addMembersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMembersIsMutable();
        members_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ChatroomMemberInfo)
    }

    static {
      defaultInstance = new ChatroomMemberInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ChatroomMemberInfo)
  }

  public interface INT64BufOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int64 id = 1;
    /**
     * <code>required int64 id = 1;</code>
     */
    boolean hasId();
    /**
     * <code>required int64 id = 1;</code>
     */
    long getId();
  }
  /**
   * Protobuf type {@code INT64Buf}
   */
  public static final class INT64Buf extends
      com.google.protobuf.GeneratedMessage
      implements INT64BufOrBuilder {
    // Use INT64Buf.newBuilder() to construct.
    private INT64Buf(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private INT64Buf(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final INT64Buf defaultInstance;
    public static INT64Buf getDefaultInstance() {
      return defaultInstance;
    }

    public INT64Buf getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private INT64Buf(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              id_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_INT64Buf_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_INT64Buf_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.INT64Buf.class, cn.wildfirechat.proto.WFCMessage.INT64Buf.Builder.class);
    }

    public static com.google.protobuf.Parser<INT64Buf> PARSER =
        new com.google.protobuf.AbstractParser<INT64Buf>() {
      public INT64Buf parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new INT64Buf(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int64 id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private long id_;
    /**
     * <code>required int64 id = 1;</code>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int64 id = 1;</code>
     */
    public long getId() {
      return id_;
    }

    private void initFields() {
      id_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(1, id_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, id_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.INT64Buf parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.INT64Buf prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code INT64Buf}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.INT64BufOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_INT64Buf_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_INT64Buf_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.INT64Buf.class, cn.wildfirechat.proto.WFCMessage.INT64Buf.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.INT64Buf.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        id_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_INT64Buf_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.INT64Buf getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.INT64Buf.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.INT64Buf build() {
        cn.wildfirechat.proto.WFCMessage.INT64Buf result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.INT64Buf buildPartial() {
        cn.wildfirechat.proto.WFCMessage.INT64Buf result = new cn.wildfirechat.proto.WFCMessage.INT64Buf(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.id_ = id_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.INT64Buf) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.INT64Buf)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.INT64Buf other) {
        if (other == cn.wildfirechat.proto.WFCMessage.INT64Buf.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasId()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.INT64Buf parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.INT64Buf) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int64 id = 1;
      private long id_ ;
      /**
       * <code>required int64 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int64 id = 1;</code>
       */
      public long getId() {
        return id_;
      }
      /**
       * <code>required int64 id = 1;</code>
       */
      public Builder setId(long value) {
        bitField0_ |= 0x00000001;
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 id = 1;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:INT64Buf)
    }

    static {
      defaultInstance = new INT64Buf(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:INT64Buf)
  }

  public interface NotifyRecallMessageOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int64 id = 1;
    /**
     * <code>required int64 id = 1;</code>
     */
    boolean hasId();
    /**
     * <code>required int64 id = 1;</code>
     */
    long getId();

    // required string from_user = 2;
    /**
     * <code>required string from_user = 2;</code>
     */
    boolean hasFromUser();
    /**
     * <code>required string from_user = 2;</code>
     */
    java.lang.String getFromUser();
    /**
     * <code>required string from_user = 2;</code>
     */
    com.google.protobuf.ByteString
        getFromUserBytes();
  }
  /**
   * Protobuf type {@code NotifyRecallMessage}
   */
  public static final class NotifyRecallMessage extends
      com.google.protobuf.GeneratedMessage
      implements NotifyRecallMessageOrBuilder {
    // Use NotifyRecallMessage.newBuilder() to construct.
    private NotifyRecallMessage(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private NotifyRecallMessage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final NotifyRecallMessage defaultInstance;
    public static NotifyRecallMessage getDefaultInstance() {
      return defaultInstance;
    }

    public NotifyRecallMessage getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private NotifyRecallMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              id_ = input.readInt64();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              fromUser_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyRecallMessage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyRecallMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage.class, cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage.Builder.class);
    }

    public static com.google.protobuf.Parser<NotifyRecallMessage> PARSER =
        new com.google.protobuf.AbstractParser<NotifyRecallMessage>() {
      public NotifyRecallMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NotifyRecallMessage(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required int64 id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private long id_;
    /**
     * <code>required int64 id = 1;</code>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int64 id = 1;</code>
     */
    public long getId() {
      return id_;
    }

    // required string from_user = 2;
    public static final int FROM_USER_FIELD_NUMBER = 2;
    private java.lang.Object fromUser_;
    /**
     * <code>required string from_user = 2;</code>
     */
    public boolean hasFromUser() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string from_user = 2;</code>
     */
    public java.lang.String getFromUser() {
      java.lang.Object ref = fromUser_;
      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();
        if (bs.isValidUtf8()) {
          fromUser_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string from_user = 2;</code>
     */
    public com.google.protobuf.ByteString
        getFromUserBytes() {
      java.lang.Object ref = fromUser_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fromUser_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      id_ = 0L;
      fromUser_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasFromUser()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getFromUserBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getFromUserBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code NotifyRecallMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.NotifyRecallMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyRecallMessage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyRecallMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage.class, cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        id_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        fromUser_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_NotifyRecallMessage_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage build() {
        cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage buildPartial() {
        cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage result = new cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.id_ = id_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.fromUser_ = fromUser_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage other) {
        if (other == cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasFromUser()) {
          bitField0_ |= 0x00000002;
          fromUser_ = other.fromUser_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasId()) {
          
          return false;
        }
        if (!hasFromUser()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.NotifyRecallMessage) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int64 id = 1;
      private long id_ ;
      /**
       * <code>required int64 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int64 id = 1;</code>
       */
      public long getId() {
        return id_;
      }
      /**
       * <code>required int64 id = 1;</code>
       */
      public Builder setId(long value) {
        bitField0_ |= 0x00000001;
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 id = 1;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0L;
        onChanged();
        return this;
      }

      // required string from_user = 2;
      private java.lang.Object fromUser_ = "";
      /**
       * <code>required string from_user = 2;</code>
       */
      public boolean hasFromUser() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public java.lang.String getFromUser() {
        java.lang.Object ref = fromUser_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          fromUser_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public com.google.protobuf.ByteString
          getFromUserBytes() {
        java.lang.Object ref = fromUser_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fromUser_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public Builder setFromUser(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        fromUser_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public Builder clearFromUser() {
        bitField0_ = (bitField0_ & ~0x00000002);
        fromUser_ = getDefaultInstance().getFromUser();
        onChanged();
        return this;
      }
      /**
       * <code>required string from_user = 2;</code>
       */
      public Builder setFromUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        fromUser_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:NotifyRecallMessage)
    }

    static {
      defaultInstance = new NotifyRecallMessage(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:NotifyRecallMessage)
  }

  public interface BlackUserRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string uid = 1;
    /**
     * <code>required string uid = 1;</code>
     */
    boolean hasUid();
    /**
     * <code>required string uid = 1;</code>
     */
    java.lang.String getUid();
    /**
     * <code>required string uid = 1;</code>
     */
    com.google.protobuf.ByteString
        getUidBytes();

    // required int32 status = 2;
    /**
     * <code>required int32 status = 2;</code>
     */
    boolean hasStatus();
    /**
     * <code>required int32 status = 2;</code>
     */
    int getStatus();
  }
  /**
   * Protobuf type {@code BlackUserRequest}
   */
  public static final class BlackUserRequest extends
      com.google.protobuf.GeneratedMessage
      implements BlackUserRequestOrBuilder {
    // Use BlackUserRequest.newBuilder() to construct.
    private BlackUserRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private BlackUserRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final BlackUserRequest defaultInstance;
    public static BlackUserRequest getDefaultInstance() {
      return defaultInstance;
    }

    public BlackUserRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private BlackUserRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              uid_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              status_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_BlackUserRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_BlackUserRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.BlackUserRequest.class, cn.wildfirechat.proto.WFCMessage.BlackUserRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<BlackUserRequest> PARSER =
        new com.google.protobuf.AbstractParser<BlackUserRequest>() {
      public BlackUserRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BlackUserRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string uid = 1;
    public static final int UID_FIELD_NUMBER = 1;
    private java.lang.Object uid_;
    /**
     * <code>required string uid = 1;</code>
     */
    public boolean hasUid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public java.lang.String getUid() {
      java.lang.Object ref = uid_;
      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();
        if (bs.isValidUtf8()) {
          uid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string uid = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUidBytes() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 status = 2;
    public static final int STATUS_FIELD_NUMBER = 2;
    private int status_;
    /**
     * <code>required int32 status = 2;</code>
     */
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 status = 2;</code>
     */
    public int getStatus() {
      return status_;
    }

    private void initFields() {
      uid_ = "";
      status_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasStatus()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, status_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, status_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.BlackUserRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.BlackUserRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code BlackUserRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.BlackUserRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_BlackUserRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_BlackUserRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.BlackUserRequest.class, cn.wildfirechat.proto.WFCMessage.BlackUserRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.BlackUserRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        status_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_BlackUserRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.BlackUserRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.BlackUserRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.BlackUserRequest build() {
        cn.wildfirechat.proto.WFCMessage.BlackUserRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.BlackUserRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.BlackUserRequest result = new cn.wildfirechat.proto.WFCMessage.BlackUserRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uid_ = uid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.status_ = status_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.BlackUserRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.BlackUserRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.BlackUserRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.BlackUserRequest.getDefaultInstance()) return this;
        if (other.hasUid()) {
          bitField0_ |= 0x00000001;
          uid_ = other.uid_;
          onChanged();
        }
        if (other.hasStatus()) {
          setStatus(other.getStatus());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUid()) {
          
          return false;
        }
        if (!hasStatus()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.BlackUserRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.BlackUserRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string uid = 1;
      private java.lang.Object uid_ = "";
      /**
       * <code>required string uid = 1;</code>
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public java.lang.String getUid() {
        java.lang.Object ref = uid_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          uid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUidBytes() {
        java.lang.Object ref = uid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder clearUid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uid_ = getDefaultInstance().getUid();
        onChanged();
        return this;
      }
      /**
       * <code>required string uid = 1;</code>
       */
      public Builder setUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uid_ = value;
        onChanged();
        return this;
      }

      // required int32 status = 2;
      private int status_ ;
      /**
       * <code>required int32 status = 2;</code>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 status = 2;</code>
       */
      public int getStatus() {
        return status_;
      }
      /**
       * <code>required int32 status = 2;</code>
       */
      public Builder setStatus(int value) {
        bitField0_ |= 0x00000002;
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 status = 2;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000002);
        status_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:BlackUserRequest)
    }

    static {
      defaultInstance = new BlackUserRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:BlackUserRequest)
  }

  public interface RouteRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string app = 1;
    /**
     * <code>optional string app = 1;</code>
     */
    boolean hasApp();
    /**
     * <code>optional string app = 1;</code>
     */
    java.lang.String getApp();
    /**
     * <code>optional string app = 1;</code>
     */
    com.google.protobuf.ByteString
        getAppBytes();

    // optional int32 platform = 2;
    /**
     * <code>optional int32 platform = 2;</code>
     */
    boolean hasPlatform();
    /**
     * <code>optional int32 platform = 2;</code>
     */
    int getPlatform();

    // optional int32 push_type = 3;
    /**
     * <code>optional int32 push_type = 3;</code>
     */
    boolean hasPushType();
    /**
     * <code>optional int32 push_type = 3;</code>
     */
    int getPushType();

    // optional string device_name = 4;
    /**
     * <code>optional string device_name = 4;</code>
     */
    boolean hasDeviceName();
    /**
     * <code>optional string device_name = 4;</code>
     */
    java.lang.String getDeviceName();
    /**
     * <code>optional string device_name = 4;</code>
     */
    com.google.protobuf.ByteString
        getDeviceNameBytes();

    // optional string device_version = 5;
    /**
     * <code>optional string device_version = 5;</code>
     */
    boolean hasDeviceVersion();
    /**
     * <code>optional string device_version = 5;</code>
     */
    java.lang.String getDeviceVersion();
    /**
     * <code>optional string device_version = 5;</code>
     */
    com.google.protobuf.ByteString
        getDeviceVersionBytes();

    // optional string phone_name = 6;
    /**
     * <code>optional string phone_name = 6;</code>
     */
    boolean hasPhoneName();
    /**
     * <code>optional string phone_name = 6;</code>
     */
    java.lang.String getPhoneName();
    /**
     * <code>optional string phone_name = 6;</code>
     */
    com.google.protobuf.ByteString
        getPhoneNameBytes();

    // optional string language = 7;
    /**
     * <code>optional string language = 7;</code>
     */
    boolean hasLanguage();
    /**
     * <code>optional string language = 7;</code>
     */
    java.lang.String getLanguage();
    /**
     * <code>optional string language = 7;</code>
     */
    com.google.protobuf.ByteString
        getLanguageBytes();

    // optional string carrier_name = 8;
    /**
     * <code>optional string carrier_name = 8;</code>
     */
    boolean hasCarrierName();
    /**
     * <code>optional string carrier_name = 8;</code>
     */
    java.lang.String getCarrierName();
    /**
     * <code>optional string carrier_name = 8;</code>
     */
    com.google.protobuf.ByteString
        getCarrierNameBytes();

    // optional string app_version = 9;
    /**
     * <code>optional string app_version = 9;</code>
     */
    boolean hasAppVersion();
    /**
     * <code>optional string app_version = 9;</code>
     */
    java.lang.String getAppVersion();
    /**
     * <code>optional string app_version = 9;</code>
     */
    com.google.protobuf.ByteString
        getAppVersionBytes();

    // optional string sdk_version = 10;
    /**
     * <code>optional string sdk_version = 10;</code>
     */
    boolean hasSdkVersion();
    /**
     * <code>optional string sdk_version = 10;</code>
     */
    java.lang.String getSdkVersion();
    /**
     * <code>optional string sdk_version = 10;</code>
     */
    com.google.protobuf.ByteString
        getSdkVersionBytes();
  }
  /**
   * Protobuf type {@code RouteRequest}
   */
  public static final class RouteRequest extends
      com.google.protobuf.GeneratedMessage
      implements RouteRequestOrBuilder {
    // Use RouteRequest.newBuilder() to construct.
    private RouteRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private RouteRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final RouteRequest defaultInstance;
    public static RouteRequest getDefaultInstance() {
      return defaultInstance;
    }

    public RouteRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private RouteRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              app_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              platform_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              pushType_ = input.readInt32();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              deviceName_ = input.readBytes();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              deviceVersion_ = input.readBytes();
              break;
            }
            case 50: {
              bitField0_ |= 0x00000020;
              phoneName_ = input.readBytes();
              break;
            }
            case 58: {
              bitField0_ |= 0x00000040;
              language_ = input.readBytes();
              break;
            }
            case 66: {
              bitField0_ |= 0x00000080;
              carrierName_ = input.readBytes();
              break;
            }
            case 74: {
              bitField0_ |= 0x00000100;
              appVersion_ = input.readBytes();
              break;
            }
            case 82: {
              bitField0_ |= 0x00000200;
              sdkVersion_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_RouteRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_RouteRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.RouteRequest.class, cn.wildfirechat.proto.WFCMessage.RouteRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<RouteRequest> PARSER =
        new com.google.protobuf.AbstractParser<RouteRequest>() {
      public RouteRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RouteRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // optional string app = 1;
    public static final int APP_FIELD_NUMBER = 1;
    private java.lang.Object app_;
    /**
     * <code>optional string app = 1;</code>
     */
    public boolean hasApp() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string app = 1;</code>
     */
    public java.lang.String getApp() {
      java.lang.Object ref = app_;
      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();
        if (bs.isValidUtf8()) {
          app_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string app = 1;</code>
     */
    public com.google.protobuf.ByteString
        getAppBytes() {
      java.lang.Object ref = app_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        app_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 platform = 2;
    public static final int PLATFORM_FIELD_NUMBER = 2;
    private int platform_;
    /**
     * <code>optional int32 platform = 2;</code>
     */
    public boolean hasPlatform() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 platform = 2;</code>
     */
    public int getPlatform() {
      return platform_;
    }

    // optional int32 push_type = 3;
    public static final int PUSH_TYPE_FIELD_NUMBER = 3;
    private int pushType_;
    /**
     * <code>optional int32 push_type = 3;</code>
     */
    public boolean hasPushType() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int32 push_type = 3;</code>
     */
    public int getPushType() {
      return pushType_;
    }

    // optional string device_name = 4;
    public static final int DEVICE_NAME_FIELD_NUMBER = 4;
    private java.lang.Object deviceName_;
    /**
     * <code>optional string device_name = 4;</code>
     */
    public boolean hasDeviceName() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string device_name = 4;</code>
     */
    public java.lang.String getDeviceName() {
      java.lang.Object ref = deviceName_;
      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();
        if (bs.isValidUtf8()) {
          deviceName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string device_name = 4;</code>
     */
    public com.google.protobuf.ByteString
        getDeviceNameBytes() {
      java.lang.Object ref = deviceName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deviceName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string device_version = 5;
    public static final int DEVICE_VERSION_FIELD_NUMBER = 5;
    private java.lang.Object deviceVersion_;
    /**
     * <code>optional string device_version = 5;</code>
     */
    public boolean hasDeviceVersion() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional string device_version = 5;</code>
     */
    public java.lang.String getDeviceVersion() {
      java.lang.Object ref = deviceVersion_;
      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();
        if (bs.isValidUtf8()) {
          deviceVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string device_version = 5;</code>
     */
    public com.google.protobuf.ByteString
        getDeviceVersionBytes() {
      java.lang.Object ref = deviceVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deviceVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string phone_name = 6;
    public static final int PHONE_NAME_FIELD_NUMBER = 6;
    private java.lang.Object phoneName_;
    /**
     * <code>optional string phone_name = 6;</code>
     */
    public boolean hasPhoneName() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional string phone_name = 6;</code>
     */
    public java.lang.String getPhoneName() {
      java.lang.Object ref = phoneName_;
      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();
        if (bs.isValidUtf8()) {
          phoneName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string phone_name = 6;</code>
     */
    public com.google.protobuf.ByteString
        getPhoneNameBytes() {
      java.lang.Object ref = phoneName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        phoneName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string language = 7;
    public static final int LANGUAGE_FIELD_NUMBER = 7;
    private java.lang.Object language_;
    /**
     * <code>optional string language = 7;</code>
     */
    public boolean hasLanguage() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional string language = 7;</code>
     */
    public java.lang.String getLanguage() {
      java.lang.Object ref = language_;
      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();
        if (bs.isValidUtf8()) {
          language_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string language = 7;</code>
     */
    public com.google.protobuf.ByteString
        getLanguageBytes() {
      java.lang.Object ref = language_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        language_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string carrier_name = 8;
    public static final int CARRIER_NAME_FIELD_NUMBER = 8;
    private java.lang.Object carrierName_;
    /**
     * <code>optional string carrier_name = 8;</code>
     */
    public boolean hasCarrierName() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional string carrier_name = 8;</code>
     */
    public java.lang.String getCarrierName() {
      java.lang.Object ref = carrierName_;
      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();
        if (bs.isValidUtf8()) {
          carrierName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string carrier_name = 8;</code>
     */
    public com.google.protobuf.ByteString
        getCarrierNameBytes() {
      java.lang.Object ref = carrierName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        carrierName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string app_version = 9;
    public static final int APP_VERSION_FIELD_NUMBER = 9;
    private java.lang.Object appVersion_;
    /**
     * <code>optional string app_version = 9;</code>
     */
    public boolean hasAppVersion() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional string app_version = 9;</code>
     */
    public java.lang.String getAppVersion() {
      java.lang.Object ref = appVersion_;
      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();
        if (bs.isValidUtf8()) {
          appVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string app_version = 9;</code>
     */
    public com.google.protobuf.ByteString
        getAppVersionBytes() {
      java.lang.Object ref = appVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        appVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string sdk_version = 10;
    public static final int SDK_VERSION_FIELD_NUMBER = 10;
    private java.lang.Object sdkVersion_;
    /**
     * <code>optional string sdk_version = 10;</code>
     */
    public boolean hasSdkVersion() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional string sdk_version = 10;</code>
     */
    public java.lang.String getSdkVersion() {
      java.lang.Object ref = sdkVersion_;
      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();
        if (bs.isValidUtf8()) {
          sdkVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string sdk_version = 10;</code>
     */
    public com.google.protobuf.ByteString
        getSdkVersionBytes() {
      java.lang.Object ref = sdkVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sdkVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      app_ = "";
      platform_ = 0;
      pushType_ = 0;
      deviceName_ = "";
      deviceVersion_ = "";
      phoneName_ = "";
      language_ = "";
      carrierName_ = "";
      appVersion_ = "";
      sdkVersion_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getAppBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, platform_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, pushType_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getDeviceNameBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getDeviceVersionBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBytes(6, getPhoneNameBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(7, getLanguageBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBytes(8, getCarrierNameBytes());
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBytes(9, getAppVersionBytes());
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBytes(10, getSdkVersionBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getAppBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, platform_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, pushType_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getDeviceNameBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getDeviceVersionBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, getPhoneNameBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getLanguageBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, getCarrierNameBytes());
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(9, getAppVersionBytes());
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(10, getSdkVersionBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.RouteRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code RouteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.RouteRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_RouteRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_RouteRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.RouteRequest.class, cn.wildfirechat.proto.WFCMessage.RouteRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.RouteRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        app_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        platform_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        pushType_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        deviceName_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        deviceVersion_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        phoneName_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        language_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        carrierName_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        appVersion_ = "";
        bitField0_ = (bitField0_ & ~0x00000100);
        sdkVersion_ = "";
        bitField0_ = (bitField0_ & ~0x00000200);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_RouteRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.RouteRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.RouteRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.RouteRequest build() {
        cn.wildfirechat.proto.WFCMessage.RouteRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.RouteRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.RouteRequest result = new cn.wildfirechat.proto.WFCMessage.RouteRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.app_ = app_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.platform_ = platform_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.pushType_ = pushType_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.deviceName_ = deviceName_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.deviceVersion_ = deviceVersion_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.phoneName_ = phoneName_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.language_ = language_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.carrierName_ = carrierName_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.appVersion_ = appVersion_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.sdkVersion_ = sdkVersion_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.RouteRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.RouteRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.RouteRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.RouteRequest.getDefaultInstance()) return this;
        if (other.hasApp()) {
          bitField0_ |= 0x00000001;
          app_ = other.app_;
          onChanged();
        }
        if (other.hasPlatform()) {
          setPlatform(other.getPlatform());
        }
        if (other.hasPushType()) {
          setPushType(other.getPushType());
        }
        if (other.hasDeviceName()) {
          bitField0_ |= 0x00000008;
          deviceName_ = other.deviceName_;
          onChanged();
        }
        if (other.hasDeviceVersion()) {
          bitField0_ |= 0x00000010;
          deviceVersion_ = other.deviceVersion_;
          onChanged();
        }
        if (other.hasPhoneName()) {
          bitField0_ |= 0x00000020;
          phoneName_ = other.phoneName_;
          onChanged();
        }
        if (other.hasLanguage()) {
          bitField0_ |= 0x00000040;
          language_ = other.language_;
          onChanged();
        }
        if (other.hasCarrierName()) {
          bitField0_ |= 0x00000080;
          carrierName_ = other.carrierName_;
          onChanged();
        }
        if (other.hasAppVersion()) {
          bitField0_ |= 0x00000100;
          appVersion_ = other.appVersion_;
          onChanged();
        }
        if (other.hasSdkVersion()) {
          bitField0_ |= 0x00000200;
          sdkVersion_ = other.sdkVersion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.RouteRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.RouteRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string app = 1;
      private java.lang.Object app_ = "";
      /**
       * <code>optional string app = 1;</code>
       */
      public boolean hasApp() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string app = 1;</code>
       */
      public java.lang.String getApp() {
        java.lang.Object ref = app_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          app_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string app = 1;</code>
       */
      public com.google.protobuf.ByteString
          getAppBytes() {
        java.lang.Object ref = app_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          app_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string app = 1;</code>
       */
      public Builder setApp(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        app_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string app = 1;</code>
       */
      public Builder clearApp() {
        bitField0_ = (bitField0_ & ~0x00000001);
        app_ = getDefaultInstance().getApp();
        onChanged();
        return this;
      }
      /**
       * <code>optional string app = 1;</code>
       */
      public Builder setAppBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        app_ = value;
        onChanged();
        return this;
      }

      // optional int32 platform = 2;
      private int platform_ ;
      /**
       * <code>optional int32 platform = 2;</code>
       */
      public boolean hasPlatform() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 platform = 2;</code>
       */
      public int getPlatform() {
        return platform_;
      }
      /**
       * <code>optional int32 platform = 2;</code>
       */
      public Builder setPlatform(int value) {
        bitField0_ |= 0x00000002;
        platform_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 platform = 2;</code>
       */
      public Builder clearPlatform() {
        bitField0_ = (bitField0_ & ~0x00000002);
        platform_ = 0;
        onChanged();
        return this;
      }

      // optional int32 push_type = 3;
      private int pushType_ ;
      /**
       * <code>optional int32 push_type = 3;</code>
       */
      public boolean hasPushType() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 push_type = 3;</code>
       */
      public int getPushType() {
        return pushType_;
      }
      /**
       * <code>optional int32 push_type = 3;</code>
       */
      public Builder setPushType(int value) {
        bitField0_ |= 0x00000004;
        pushType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 push_type = 3;</code>
       */
      public Builder clearPushType() {
        bitField0_ = (bitField0_ & ~0x00000004);
        pushType_ = 0;
        onChanged();
        return this;
      }

      // optional string device_name = 4;
      private java.lang.Object deviceName_ = "";
      /**
       * <code>optional string device_name = 4;</code>
       */
      public boolean hasDeviceName() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string device_name = 4;</code>
       */
      public java.lang.String getDeviceName() {
        java.lang.Object ref = deviceName_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          deviceName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string device_name = 4;</code>
       */
      public com.google.protobuf.ByteString
          getDeviceNameBytes() {
        java.lang.Object ref = deviceName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deviceName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string device_name = 4;</code>
       */
      public Builder setDeviceName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        deviceName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string device_name = 4;</code>
       */
      public Builder clearDeviceName() {
        bitField0_ = (bitField0_ & ~0x00000008);
        deviceName_ = getDefaultInstance().getDeviceName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string device_name = 4;</code>
       */
      public Builder setDeviceNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        deviceName_ = value;
        onChanged();
        return this;
      }

      // optional string device_version = 5;
      private java.lang.Object deviceVersion_ = "";
      /**
       * <code>optional string device_version = 5;</code>
       */
      public boolean hasDeviceVersion() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional string device_version = 5;</code>
       */
      public java.lang.String getDeviceVersion() {
        java.lang.Object ref = deviceVersion_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          deviceVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string device_version = 5;</code>
       */
      public com.google.protobuf.ByteString
          getDeviceVersionBytes() {
        java.lang.Object ref = deviceVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deviceVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string device_version = 5;</code>
       */
      public Builder setDeviceVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        deviceVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string device_version = 5;</code>
       */
      public Builder clearDeviceVersion() {
        bitField0_ = (bitField0_ & ~0x00000010);
        deviceVersion_ = getDefaultInstance().getDeviceVersion();
        onChanged();
        return this;
      }
      /**
       * <code>optional string device_version = 5;</code>
       */
      public Builder setDeviceVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        deviceVersion_ = value;
        onChanged();
        return this;
      }

      // optional string phone_name = 6;
      private java.lang.Object phoneName_ = "";
      /**
       * <code>optional string phone_name = 6;</code>
       */
      public boolean hasPhoneName() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional string phone_name = 6;</code>
       */
      public java.lang.String getPhoneName() {
        java.lang.Object ref = phoneName_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          phoneName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string phone_name = 6;</code>
       */
      public com.google.protobuf.ByteString
          getPhoneNameBytes() {
        java.lang.Object ref = phoneName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          phoneName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string phone_name = 6;</code>
       */
      public Builder setPhoneName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        phoneName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string phone_name = 6;</code>
       */
      public Builder clearPhoneName() {
        bitField0_ = (bitField0_ & ~0x00000020);
        phoneName_ = getDefaultInstance().getPhoneName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string phone_name = 6;</code>
       */
      public Builder setPhoneNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        phoneName_ = value;
        onChanged();
        return this;
      }

      // optional string language = 7;
      private java.lang.Object language_ = "";
      /**
       * <code>optional string language = 7;</code>
       */
      public boolean hasLanguage() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional string language = 7;</code>
       */
      public java.lang.String getLanguage() {
        java.lang.Object ref = language_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          language_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string language = 7;</code>
       */
      public com.google.protobuf.ByteString
          getLanguageBytes() {
        java.lang.Object ref = language_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          language_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string language = 7;</code>
       */
      public Builder setLanguage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        language_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string language = 7;</code>
       */
      public Builder clearLanguage() {
        bitField0_ = (bitField0_ & ~0x00000040);
        language_ = getDefaultInstance().getLanguage();
        onChanged();
        return this;
      }
      /**
       * <code>optional string language = 7;</code>
       */
      public Builder setLanguageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        language_ = value;
        onChanged();
        return this;
      }

      // optional string carrier_name = 8;
      private java.lang.Object carrierName_ = "";
      /**
       * <code>optional string carrier_name = 8;</code>
       */
      public boolean hasCarrierName() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional string carrier_name = 8;</code>
       */
      public java.lang.String getCarrierName() {
        java.lang.Object ref = carrierName_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          carrierName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string carrier_name = 8;</code>
       */
      public com.google.protobuf.ByteString
          getCarrierNameBytes() {
        java.lang.Object ref = carrierName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          carrierName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string carrier_name = 8;</code>
       */
      public Builder setCarrierName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        carrierName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string carrier_name = 8;</code>
       */
      public Builder clearCarrierName() {
        bitField0_ = (bitField0_ & ~0x00000080);
        carrierName_ = getDefaultInstance().getCarrierName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string carrier_name = 8;</code>
       */
      public Builder setCarrierNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        carrierName_ = value;
        onChanged();
        return this;
      }

      // optional string app_version = 9;
      private java.lang.Object appVersion_ = "";
      /**
       * <code>optional string app_version = 9;</code>
       */
      public boolean hasAppVersion() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional string app_version = 9;</code>
       */
      public java.lang.String getAppVersion() {
        java.lang.Object ref = appVersion_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          appVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string app_version = 9;</code>
       */
      public com.google.protobuf.ByteString
          getAppVersionBytes() {
        java.lang.Object ref = appVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          appVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string app_version = 9;</code>
       */
      public Builder setAppVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        appVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string app_version = 9;</code>
       */
      public Builder clearAppVersion() {
        bitField0_ = (bitField0_ & ~0x00000100);
        appVersion_ = getDefaultInstance().getAppVersion();
        onChanged();
        return this;
      }
      /**
       * <code>optional string app_version = 9;</code>
       */
      public Builder setAppVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        appVersion_ = value;
        onChanged();
        return this;
      }

      // optional string sdk_version = 10;
      private java.lang.Object sdkVersion_ = "";
      /**
       * <code>optional string sdk_version = 10;</code>
       */
      public boolean hasSdkVersion() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional string sdk_version = 10;</code>
       */
      public java.lang.String getSdkVersion() {
        java.lang.Object ref = sdkVersion_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          sdkVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string sdk_version = 10;</code>
       */
      public com.google.protobuf.ByteString
          getSdkVersionBytes() {
        java.lang.Object ref = sdkVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sdkVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string sdk_version = 10;</code>
       */
      public Builder setSdkVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        sdkVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string sdk_version = 10;</code>
       */
      public Builder clearSdkVersion() {
        bitField0_ = (bitField0_ & ~0x00000200);
        sdkVersion_ = getDefaultInstance().getSdkVersion();
        onChanged();
        return this;
      }
      /**
       * <code>optional string sdk_version = 10;</code>
       */
      public Builder setSdkVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        sdkVersion_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:RouteRequest)
    }

    static {
      defaultInstance = new RouteRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:RouteRequest)
  }

  public interface RouteResponseOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string host = 1;
    /**
     * <code>required string host = 1;</code>
     */
    boolean hasHost();
    /**
     * <code>required string host = 1;</code>
     */
    java.lang.String getHost();
    /**
     * <code>required string host = 1;</code>
     */
    com.google.protobuf.ByteString
        getHostBytes();

    // required int32 long_port = 2;
    /**
     * <code>required int32 long_port = 2;</code>
     */
    boolean hasLongPort();
    /**
     * <code>required int32 long_port = 2;</code>
     */
    int getLongPort();

    // required int32 short_port = 3;
    /**
     * <code>required int32 short_port = 3;</code>
     */
    boolean hasShortPort();
    /**
     * <code>required int32 short_port = 3;</code>
     */
    int getShortPort();
  }
  /**
   * Protobuf type {@code RouteResponse}
   */
  public static final class RouteResponse extends
      com.google.protobuf.GeneratedMessage
      implements RouteResponseOrBuilder {
    // Use RouteResponse.newBuilder() to construct.
    private RouteResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private RouteResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final RouteResponse defaultInstance;
    public static RouteResponse getDefaultInstance() {
      return defaultInstance;
    }

    public RouteResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private RouteResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              host_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              longPort_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              shortPort_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_RouteResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_RouteResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.RouteResponse.class, cn.wildfirechat.proto.WFCMessage.RouteResponse.Builder.class);
    }

    public static com.google.protobuf.Parser<RouteResponse> PARSER =
        new com.google.protobuf.AbstractParser<RouteResponse>() {
      public RouteResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RouteResponse(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string host = 1;
    public static final int HOST_FIELD_NUMBER = 1;
    private java.lang.Object host_;
    /**
     * <code>required string host = 1;</code>
     */
    public boolean hasHost() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string host = 1;</code>
     */
    public java.lang.String getHost() {
      java.lang.Object ref = host_;
      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();
        if (bs.isValidUtf8()) {
          host_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string host = 1;</code>
     */
    public com.google.protobuf.ByteString
        getHostBytes() {
      java.lang.Object ref = host_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        host_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required int32 long_port = 2;
    public static final int LONG_PORT_FIELD_NUMBER = 2;
    private int longPort_;
    /**
     * <code>required int32 long_port = 2;</code>
     */
    public boolean hasLongPort() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 long_port = 2;</code>
     */
    public int getLongPort() {
      return longPort_;
    }

    // required int32 short_port = 3;
    public static final int SHORT_PORT_FIELD_NUMBER = 3;
    private int shortPort_;
    /**
     * <code>required int32 short_port = 3;</code>
     */
    public boolean hasShortPort() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int32 short_port = 3;</code>
     */
    public int getShortPort() {
      return shortPort_;
    }

    private void initFields() {
      host_ = "";
      longPort_ = 0;
      shortPort_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasHost()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLongPort()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasShortPort()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getHostBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, longPort_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, shortPort_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getHostBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, longPort_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, shortPort_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.RouteResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.RouteResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code RouteResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.RouteResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_RouteResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_RouteResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.RouteResponse.class, cn.wildfirechat.proto.WFCMessage.RouteResponse.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.RouteResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        host_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        longPort_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        shortPort_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_RouteResponse_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.RouteResponse getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.RouteResponse.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.RouteResponse build() {
        cn.wildfirechat.proto.WFCMessage.RouteResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.RouteResponse buildPartial() {
        cn.wildfirechat.proto.WFCMessage.RouteResponse result = new cn.wildfirechat.proto.WFCMessage.RouteResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.host_ = host_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.longPort_ = longPort_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.shortPort_ = shortPort_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.RouteResponse) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.RouteResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.RouteResponse other) {
        if (other == cn.wildfirechat.proto.WFCMessage.RouteResponse.getDefaultInstance()) return this;
        if (other.hasHost()) {
          bitField0_ |= 0x00000001;
          host_ = other.host_;
          onChanged();
        }
        if (other.hasLongPort()) {
          setLongPort(other.getLongPort());
        }
        if (other.hasShortPort()) {
          setShortPort(other.getShortPort());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasHost()) {
          
          return false;
        }
        if (!hasLongPort()) {
          
          return false;
        }
        if (!hasShortPort()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.RouteResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.RouteResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string host = 1;
      private java.lang.Object host_ = "";
      /**
       * <code>required string host = 1;</code>
       */
      public boolean hasHost() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string host = 1;</code>
       */
      public java.lang.String getHost() {
        java.lang.Object ref = host_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          host_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string host = 1;</code>
       */
      public com.google.protobuf.ByteString
          getHostBytes() {
        java.lang.Object ref = host_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          host_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string host = 1;</code>
       */
      public Builder setHost(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        host_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string host = 1;</code>
       */
      public Builder clearHost() {
        bitField0_ = (bitField0_ & ~0x00000001);
        host_ = getDefaultInstance().getHost();
        onChanged();
        return this;
      }
      /**
       * <code>required string host = 1;</code>
       */
      public Builder setHostBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        host_ = value;
        onChanged();
        return this;
      }

      // required int32 long_port = 2;
      private int longPort_ ;
      /**
       * <code>required int32 long_port = 2;</code>
       */
      public boolean hasLongPort() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 long_port = 2;</code>
       */
      public int getLongPort() {
        return longPort_;
      }
      /**
       * <code>required int32 long_port = 2;</code>
       */
      public Builder setLongPort(int value) {
        bitField0_ |= 0x00000002;
        longPort_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 long_port = 2;</code>
       */
      public Builder clearLongPort() {
        bitField0_ = (bitField0_ & ~0x00000002);
        longPort_ = 0;
        onChanged();
        return this;
      }

      // required int32 short_port = 3;
      private int shortPort_ ;
      /**
       * <code>required int32 short_port = 3;</code>
       */
      public boolean hasShortPort() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 short_port = 3;</code>
       */
      public int getShortPort() {
        return shortPort_;
      }
      /**
       * <code>required int32 short_port = 3;</code>
       */
      public Builder setShortPort(int value) {
        bitField0_ |= 0x00000004;
        shortPort_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 short_port = 3;</code>
       */
      public Builder clearShortPort() {
        bitField0_ = (bitField0_ & ~0x00000004);
        shortPort_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:RouteResponse)
    }

    static {
      defaultInstance = new RouteResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:RouteResponse)
  }

  public interface GetTokenRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string user_id = 1;
    /**
     * <code>required string user_id = 1;</code>
     */
    boolean hasUserId();
    /**
     * <code>required string user_id = 1;</code>
     */
    java.lang.String getUserId();
    /**
     * <code>required string user_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getUserIdBytes();

    // required string client_id = 2;
    /**
     * <code>required string client_id = 2;</code>
     */
    boolean hasClientId();
    /**
     * <code>required string client_id = 2;</code>
     */
    java.lang.String getClientId();
    /**
     * <code>required string client_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getClientIdBytes();
  }
  /**
   * Protobuf type {@code GetTokenRequest}
   */
  public static final class GetTokenRequest extends
      com.google.protobuf.GeneratedMessage
      implements GetTokenRequestOrBuilder {
    // Use GetTokenRequest.newBuilder() to construct.
    private GetTokenRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetTokenRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetTokenRequest defaultInstance;
    public static GetTokenRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GetTokenRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetTokenRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              userId_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              clientId_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetTokenRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cn.wildfirechat.proto.WFCMessage.internal_static_GetTokenRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cn.wildfirechat.proto.WFCMessage.GetTokenRequest.class, cn.wildfirechat.proto.WFCMessage.GetTokenRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<GetTokenRequest> PARSER =
        new com.google.protobuf.AbstractParser<GetTokenRequest>() {
      public GetTokenRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetTokenRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // required string user_id = 1;
    public static final int USER_ID_FIELD_NUMBER = 1;
    private java.lang.Object userId_;
    /**
     * <code>required string user_id = 1;</code>
     */
    public boolean hasUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string user_id = 1;</code>
     */
    public java.lang.String getUserId() {
      java.lang.Object ref = userId_;
      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();
        if (bs.isValidUtf8()) {
          userId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string user_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUserIdBytes() {
      java.lang.Object ref = userId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string client_id = 2;
    public static final int CLIENT_ID_FIELD_NUMBER = 2;
    private java.lang.Object clientId_;
    /**
     * <code>required string client_id = 2;</code>
     */
    public boolean hasClientId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string client_id = 2;</code>
     */
    public java.lang.String getClientId() {
      java.lang.Object ref = clientId_;
      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();
        if (bs.isValidUtf8()) {
          clientId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string client_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getClientIdBytes() {
      java.lang.Object ref = clientId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        clientId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      userId_ = "";
      clientId_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasUserId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasClientId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUserIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getClientIdBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUserIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getClientIdBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static cn.wildfirechat.proto.WFCMessage.GetTokenRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(cn.wildfirechat.proto.WFCMessage.GetTokenRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetTokenRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements cn.wildfirechat.proto.WFCMessage.GetTokenRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetTokenRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetTokenRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cn.wildfirechat.proto.WFCMessage.GetTokenRequest.class, cn.wildfirechat.proto.WFCMessage.GetTokenRequest.Builder.class);
      }

      // Construct using cn.wildfirechat.proto.WFCMessage.GetTokenRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        userId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        clientId_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cn.wildfirechat.proto.WFCMessage.internal_static_GetTokenRequest_descriptor;
      }

      public cn.wildfirechat.proto.WFCMessage.GetTokenRequest getDefaultInstanceForType() {
        return cn.wildfirechat.proto.WFCMessage.GetTokenRequest.getDefaultInstance();
      }

      public cn.wildfirechat.proto.WFCMessage.GetTokenRequest build() {
        cn.wildfirechat.proto.WFCMessage.GetTokenRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public cn.wildfirechat.proto.WFCMessage.GetTokenRequest buildPartial() {
        cn.wildfirechat.proto.WFCMessage.GetTokenRequest result = new cn.wildfirechat.proto.WFCMessage.GetTokenRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.userId_ = userId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.clientId_ = clientId_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cn.wildfirechat.proto.WFCMessage.GetTokenRequest) {
          return mergeFrom((cn.wildfirechat.proto.WFCMessage.GetTokenRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cn.wildfirechat.proto.WFCMessage.GetTokenRequest other) {
        if (other == cn.wildfirechat.proto.WFCMessage.GetTokenRequest.getDefaultInstance()) return this;
        if (other.hasUserId()) {
          bitField0_ |= 0x00000001;
          userId_ = other.userId_;
          onChanged();
        }
        if (other.hasClientId()) {
          bitField0_ |= 0x00000002;
          clientId_ = other.clientId_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUserId()) {
          
          return false;
        }
        if (!hasClientId()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cn.wildfirechat.proto.WFCMessage.GetTokenRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cn.wildfirechat.proto.WFCMessage.GetTokenRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string user_id = 1;
      private java.lang.Object userId_ = "";
      /**
       * <code>required string user_id = 1;</code>
       */
      public boolean hasUserId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string user_id = 1;</code>
       */
      public java.lang.String getUserId() {
        java.lang.Object ref = userId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          userId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string user_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUserIdBytes() {
        java.lang.Object ref = userId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string user_id = 1;</code>
       */
      public Builder setUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        userId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string user_id = 1;</code>
       */
      public Builder clearUserId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        userId_ = getDefaultInstance().getUserId();
        onChanged();
        return this;
      }
      /**
       * <code>required string user_id = 1;</code>
       */
      public Builder setUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        userId_ = value;
        onChanged();
        return this;
      }

      // required string client_id = 2;
      private java.lang.Object clientId_ = "";
      /**
       * <code>required string client_id = 2;</code>
       */
      public boolean hasClientId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public java.lang.String getClientId() {
        java.lang.Object ref = clientId_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          clientId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getClientIdBytes() {
        java.lang.Object ref = clientId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public Builder setClientId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        clientId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public Builder clearClientId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        clientId_ = getDefaultInstance().getClientId();
        onChanged();
        return this;
      }
      /**
       * <code>required string client_id = 2;</code>
       */
      public Builder setClientIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        clientId_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetTokenRequest)
    }

    static {
      defaultInstance = new GetTokenRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetTokenRequest)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_AddFriendRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_AddFriendRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Conversation_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Conversation_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GroupInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GroupInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GroupMember_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GroupMember_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Group_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Group_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ChannelInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ChannelInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ModifyChannelInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ModifyChannelInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_TransferChannel_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_TransferChannel_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullChannelInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullChannelInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullChannelListener_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullChannelListener_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullChannelListenerResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullChannelListenerResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ListenChannel_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ListenChannel_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_SearchChannelResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SearchChannelResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_MessageContent_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_MessageContent_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_AddGroupMemberRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_AddGroupMemberRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_CreateGroupRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CreateGroupRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_DismissGroupRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_DismissGroupRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_FriendRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FriendRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GeneralResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GeneralResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GetUploadTokenResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetUploadTokenResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_HandleFriendRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_HandleFriendRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_IDBuf_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IDBuf_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_IDListBuf_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IDListBuf_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Message_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Message_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_User_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_User_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Robot_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Robot_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GetRobotsResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetRobotsResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Thing_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Thing_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GetThingsResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetThingsResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_UploadDeviceTokenRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_UploadDeviceTokenRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ModifyGroupInfoRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ModifyGroupInfoRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_InfoEntry_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_InfoEntry_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ModifyMyInfoRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ModifyMyInfoRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_NotifyMessage_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_NotifyMessage_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullMessageRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullMessageRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullMessageResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullMessageResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullGroupInfoResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullGroupInfoResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullGroupMemberRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullGroupMemberRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullGroupMemberResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullGroupMemberResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_UserRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_UserRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullUserRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullUserRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_UserResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_UserResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_PullUserResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_PullUserResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_QuitGroupRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_QuitGroupRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_RemoveGroupMemberRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_RemoveGroupMemberRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_TransferGroupRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_TransferGroupRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ModifyGroupMemberAlias_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ModifyGroupMemberAlias_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_UserSettingEntry_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_UserSettingEntry_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ModifyUserSettingReq_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ModifyUserSettingReq_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Version_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Version_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GetUserSettingResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetUserSettingResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Friend_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Friend_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GetFriendsResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetFriendsResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GetFriendRequestResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetFriendRequestResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ConnectAckPayload_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ConnectAckPayload_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_IMHttpWrapper_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IMHttpWrapper_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_SearchUserRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SearchUserRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_SearchUserResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SearchUserResult_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GetChatroomInfoRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetChatroomInfoRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ChatroomInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ChatroomInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GetChatroomMemberInfoRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetChatroomMemberInfoRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ChatroomMemberInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ChatroomMemberInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_INT64Buf_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_INT64Buf_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_NotifyRecallMessage_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_NotifyRecallMessage_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_BlackUserRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_BlackUserRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_RouteRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_RouteRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_RouteResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_RouteResponse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GetTokenRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetTokenRequest_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\020wfcmessage.proto\"6\n\020AddFriendRequest\022\022" +
      "\n\ntarget_uid\030\001 \002(\t\022\016\n\006reason\030\002 \002(\t\":\n\014Co" +
      "nversation\022\014\n\004type\030\001 \002(\005\022\016\n\006target\030\002 \002(\t" +
      "\022\014\n\004line\030\003 \002(\005\"\255\001\n\tGroupInfo\022\021\n\ttarget_i" +
      "d\030\001 \001(\t\022\014\n\004name\030\002 \002(\t\022\020\n\010portrait\030\003 \001(\t\022" +
      "\r\n\005owner\030\004 \001(\t\022\014\n\004type\030\005 \002(\005\022\024\n\014member_c" +
      "ount\030\006 \001(\005\022\r\n\005extra\030\007 \001(\t\022\021\n\tupdate_dt\030\010" +
      " \001(\003\022\030\n\020member_update_dt\030\t \001(\003\"P\n\013GroupM" +
      "ember\022\021\n\tmember_id\030\001 \002(\t\022\r\n\005alias\030\002 \001(\t\022" +
      "\014\n\004type\030\003 \002(\005\022\021\n\tupdate_dt\030\004 \001(\003\"F\n\005Grou",
      "p\022\036\n\ngroup_info\030\001 \002(\0132\n.GroupInfo\022\035\n\007mem" +
      "bers\030\002 \003(\0132\014.GroupMember\"\304\001\n\013ChannelInfo" +
      "\022\021\n\ttarget_id\030\001 \001(\t\022\014\n\004name\030\002 \002(\t\022\020\n\010por" +
      "trait\030\003 \001(\t\022\r\n\005owner\030\004 \001(\t\022\016\n\006status\030\005 \001" +
      "(\005\022\014\n\004desc\030\006 \001(\t\022\r\n\005extra\030\007 \001(\t\022\021\n\tupdat" +
      "e_dt\030\010 \001(\003\022\016\n\006secret\030\t \001(\t\022\020\n\010callback\030\n" +
      " \001(\t\022\021\n\tautomatic\030\013 \001(\005\"D\n\021ModifyChannel" +
      "Info\022\022\n\nchannel_id\030\001 \002(\t\022\014\n\004type\030\002 \002(\005\022\r" +
      "\n\005value\030\003 \002(\t\"8\n\017TransferChannel\022\022\n\nchan" +
      "nel_id\030\001 \002(\t\022\021\n\tnew_owner\030\002 \002(\t\"3\n\017PullC",
      "hannelInfo\022\022\n\nchannel_id\030\001 \002(\t\022\014\n\004head\030\002" +
      " \002(\003\"H\n\023PullChannelListener\022\022\n\nchannel_i" +
      "d\030\001 \002(\t\022\016\n\006offset\030\002 \002(\005\022\r\n\005count\030\003 \002(\005\"R" +
      "\n\031PullChannelListenerResult\022\023\n\013total_cou" +
      "nt\030\001 \002(\005\022\016\n\006offset\030\002 \002(\005\022\020\n\010listener\030\003 \003" +
      "(\t\"3\n\rListenChannel\022\022\n\nchannel_id\030\001 \002(\t\022" +
      "\016\n\006listen\030\002 \002(\005\"E\n\023SearchChannelResult\022\035" +
      "\n\007channel\030\001 \003(\0132\014.ChannelInfo\022\017\n\007keyword" +
      "\030\002 \002(\t\"\373\001\n\016MessageContent\022\014\n\004type\030\001 \002(\005\022" +
      "\032\n\022searchable_content\030\002 \001(\t\022\024\n\014push_cont",
      "ent\030\003 \001(\t\022\017\n\007content\030\004 \001(\t\022\014\n\004data\030\005 \001(\014" +
      "\022\021\n\tmediaType\030\006 \001(\005\022\026\n\016remoteMediaUrl\030\007 " +
      "\001(\t\022\024\n\014persist_flag\030\010 \001(\005\022\027\n\017expire_dura" +
      "tion\030\t \001(\005\022\026\n\016mentioned_type\030\n \001(\005\022\030\n\020me" +
      "ntioned_target\030\013 \003(\t\"\207\001\n\025AddGroupMemberR" +
      "equest\022\020\n\010group_id\030\001 \002(\t\022\"\n\014added_member" +
      "\030\002 \003(\0132\014.GroupMember\022\017\n\007to_line\030\003 \003(\005\022\'\n" +
      "\016notify_content\030\004 \001(\0132\017.MessageContent\"e" +
      "\n\022CreateGroupRequest\022\025\n\005group\030\001 \002(\0132\006.Gr" +
      "oup\022\017\n\007to_line\030\002 \003(\005\022\'\n\016notify_content\030\003",
      " \001(\0132\017.MessageContent\"a\n\023DismissGroupReq" +
      "uest\022\020\n\010group_id\030\001 \002(\t\022\017\n\007to_line\030\002 \003(\005\022" +
      "\'\n\016notify_content\030\003 \001(\0132\017.MessageContent" +
      "\"\226\001\n\rFriendRequest\022\020\n\010from_uid\030\001 \001(\t\022\016\n\006" +
      "to_uid\030\002 \002(\t\022\016\n\006reason\030\003 \002(\t\022\016\n\006status\030\004" +
      " \001(\005\022\021\n\tupdate_dt\030\005 \001(\003\022\030\n\020from_read_sta" +
      "tus\030\006 \001(\010\022\026\n\016to_read_status\030\007 \001(\010\"#\n\rGen" +
      "eralResult\022\022\n\nerror_code\030\001 \002(\005\"E\n\024GetUpl" +
      "oadTokenResult\022\016\n\006domain\030\001 \002(\t\022\r\n\005token\030" +
      "\002 \002(\t\022\016\n\006server\030\003 \002(\t\"9\n\023HandleFriendReq",
      "uest\022\022\n\ntarget_uid\030\001 \002(\t\022\016\n\006status\030\002 \002(\005" +
      "\"\023\n\005IDBuf\022\n\n\002id\030\001 \002(\t\"\027\n\tIDListBuf\022\n\n\002id" +
      "\030\001 \003(\t\"\242\001\n\007Message\022#\n\014conversation\030\001 \002(\013" +
      "2\r.Conversation\022\021\n\tfrom_user\030\002 \002(\t\022 \n\007co" +
      "ntent\030\003 \002(\0132\017.MessageContent\022\022\n\nmessage_" +
      "id\030\004 \001(\003\022\030\n\020server_timestamp\030\005 \001(\003\022\017\n\007to" +
      "_user\030\006 \001(\t\"\332\001\n\004User\022\013\n\003uid\030\001 \002(\t\022\014\n\004nam" +
      "e\030\002 \001(\t\022\024\n\014display_name\030\003 \001(\t\022\020\n\010portrai" +
      "t\030\004 \001(\t\022\016\n\006mobile\030\005 \001(\t\022\r\n\005email\030\006 \001(\t\022\017" +
      "\n\007address\030\007 \001(\t\022\017\n\007company\030\010 \001(\t\022\r\n\005extr",
      "a\030\t \001(\t\022\021\n\tupdate_dt\030\n \001(\003\022\016\n\006gender\030\013 \001" +
      "(\005\022\016\n\006social\030\014 \001(\t\022\014\n\004type\030\r \001(\005\"c\n\005Robo" +
      "t\022\013\n\003uid\030\001 \002(\t\022\r\n\005state\030\002 \002(\005\022\r\n\005owner\030\003" +
      " \001(\t\022\016\n\006secret\030\004 \001(\t\022\020\n\010callback\030\005 \001(\t\022\r" +
      "\n\005extra\030\006 \001(\t\"(\n\017GetRobotsResult\022\025\n\005entr" +
      "y\030\001 \003(\0132\006.Robot\"P\n\005Thing\022\013\n\003uid\030\001 \002(\t\022\r\n" +
      "\005state\030\002 \002(\005\022\r\n\005token\030\003 \002(\t\022\r\n\005owner\030\004 \001" +
      "(\t\022\r\n\005extra\030\005 \001(\t\"(\n\017GetThingsResult\022\025\n\005" +
      "entry\030\001 \003(\0132\006.Thing\"g\n\030UploadDeviceToken" +
      "Request\022\020\n\010platform\030\001 \002(\005\022\020\n\010app_name\030\002 ",
      "\002(\t\022\024\n\014device_token\030\003 \002(\t\022\021\n\tpush_type\030\004" +
      " \002(\005\"\201\001\n\026ModifyGroupInfoRequest\022\020\n\010group" +
      "_id\030\001 \002(\t\022\014\n\004type\030\002 \002(\005\022\r\n\005value\030\003 \002(\t\022\017" +
      "\n\007to_line\030\004 \003(\005\022\'\n\016notify_content\030\005 \001(\0132" +
      "\017.MessageContent\"(\n\tInfoEntry\022\014\n\004type\030\001 " +
      "\002(\005\022\r\n\005value\030\002 \002(\t\"0\n\023ModifyMyInfoReques" +
      "t\022\031\n\005entry\030\001 \003(\0132\n.InfoEntry\";\n\rNotifyMe" +
      "ssage\022\014\n\004type\030\001 \002(\005\022\014\n\004head\030\002 \002(\003\022\016\n\006tar" +
      "get\030\003 \001(\t\"=\n\022PullMessageRequest\022\n\n\002id\030\001 " +
      "\002(\003\022\014\n\004type\030\002 \002(\005\022\r\n\005delay\030\003 \001(\003\"M\n\021Pull",
      "MessageResult\022\031\n\007message\030\001 \003(\0132\010.Message" +
      "\022\017\n\007current\030\002 \002(\003\022\014\n\004head\030\003 \002(\003\"/\n\023PullG" +
      "roupInfoResult\022\030\n\004info\030\001 \003(\0132\n.GroupInfo" +
      "\"6\n\026PullGroupMemberRequest\022\016\n\006target\030\001 \002" +
      "(\t\022\014\n\004head\030\002 \002(\003\"5\n\025PullGroupMemberResul" +
      "t\022\034\n\006member\030\001 \003(\0132\014.GroupMember\"-\n\013UserR" +
      "equest\022\013\n\003uid\030\001 \002(\t\022\021\n\tupdate_dt\030\002 \001(\003\"0" +
      "\n\017PullUserRequest\022\035\n\007request\030\001 \003(\0132\014.Use" +
      "rRequest\"/\n\nUserResult\022\023\n\004user\030\001 \002(\0132\005.U" +
      "ser\022\014\n\004code\030\002 \002(\005\"-\n\016PullUserResult\022\033\n\006r",
      "esult\030\001 \003(\0132\013.UserResult\"^\n\020QuitGroupReq" +
      "uest\022\020\n\010group_id\030\001 \002(\t\022\017\n\007to_line\030\002 \003(\005\022" +
      "\'\n\016notify_content\030\003 \001(\0132\017.MessageContent" +
      "\"~\n\030RemoveGroupMemberRequest\022\020\n\010group_id" +
      "\030\001 \002(\t\022\026\n\016removed_member\030\002 \003(\t\022\017\n\007to_lin" +
      "e\030\003 \003(\005\022\'\n\016notify_content\030\004 \001(\0132\017.Messag" +
      "eContent\"u\n\024TransferGroupRequest\022\020\n\010grou" +
      "p_id\030\001 \002(\t\022\021\n\tnew_owner\030\002 \002(\t\022\017\n\007to_line" +
      "\030\003 \003(\005\022\'\n\016notify_content\030\004 \001(\0132\017.Message" +
      "Content\"s\n\026ModifyGroupMemberAlias\022\020\n\010gro",
      "up_id\030\001 \002(\t\022\r\n\005alias\030\002 \002(\t\022\017\n\007to_line\030\003 " +
      "\003(\005\022\'\n\016notify_content\030\004 \001(\0132\017.MessageCon" +
      "tent\"P\n\020UserSettingEntry\022\r\n\005scope\030\001 \002(\005\022" +
      "\013\n\003key\030\002 \002(\t\022\r\n\005value\030\003 \002(\t\022\021\n\tupdate_dt" +
      "\030\004 \002(\003\"A\n\024ModifyUserSettingReq\022\r\n\005scope\030" +
      "\001 \002(\005\022\013\n\003key\030\002 \002(\t\022\r\n\005value\030\003 \002(\t\"\032\n\007Ver" +
      "sion\022\017\n\007version\030\001 \002(\003\"8\n\024GetUserSettingR" +
      "esult\022 \n\005entry\030\001 \003(\0132\021.UserSettingEntry\"" +
      "7\n\006Friend\022\013\n\003uid\030\001 \002(\t\022\r\n\005state\030\002 \002(\005\022\021\n" +
      "\tupdate_dt\030\003 \002(\003\"*\n\020GetFriendsResult\022\026\n\005",
      "entry\030\001 \003(\0132\007.Friend\"7\n\026GetFriendRequest" +
      "Result\022\035\n\005entry\030\001 \003(\0132\016.FriendRequest\"\243\001" +
      "\n\021ConnectAckPayload\022\020\n\010msg_head\030\001 \001(\003\022\023\n" +
      "\013friend_head\030\002 \001(\003\022\026\n\016friend_rq_head\030\003 \001" +
      "(\003\022\024\n\014setting_head\030\004 \001(\003\022\021\n\tnode_addr\030\005 " +
      "\001(\t\022\021\n\tnode_port\030\006 \001(\005\022\023\n\013server_time\030\007 " +
      "\001(\003\"P\n\rIMHttpWrapper\022\r\n\005token\030\001 \002(\t\022\021\n\tc" +
      "lient_id\030\002 \002(\t\022\017\n\007request\030\003 \002(\t\022\014\n\004data\030" +
      "\004 \001(\014\"A\n\021SearchUserRequest\022\017\n\007keyword\030\001 " +
      "\002(\t\022\r\n\005fuzzy\030\002 \001(\005\022\014\n\004page\030\003 \001(\005\"(\n\020Sear",
      "chUserResult\022\024\n\005entry\030\001 \003(\0132\005.User\"@\n\026Ge" +
      "tChatroomInfoRequest\022\023\n\013chatroom_id\030\001 \002(" +
      "\t\022\021\n\tupdate_dt\030\002 \001(\003\"\227\001\n\014ChatroomInfo\022\r\n" +
      "\005title\030\001 \002(\t\022\014\n\004desc\030\002 \001(\t\022\020\n\010portrait\030\003" +
      " \001(\t\022\024\n\014member_count\030\004 \001(\005\022\021\n\tcreate_dt\030" +
      "\005 \001(\003\022\021\n\tupdate_dt\030\006 \001(\003\022\r\n\005extra\030\007 \001(\t\022" +
      "\r\n\005state\030\010 \001(\005\"F\n\034GetChatroomMemberInfoR" +
      "equest\022\023\n\013chatroom_id\030\001 \002(\t\022\021\n\tmax_count" +
      "\030\002 \001(\005\";\n\022ChatroomMemberInfo\022\024\n\014member_c" +
      "ount\030\001 \001(\005\022\017\n\007members\030\002 \003(\t\"\026\n\010INT64Buf\022",
      "\n\n\002id\030\001 \002(\003\"4\n\023NotifyRecallMessage\022\n\n\002id" +
      "\030\001 \002(\003\022\021\n\tfrom_user\030\002 \002(\t\"/\n\020BlackUserRe" +
      "quest\022\013\n\003uid\030\001 \002(\t\022\016\n\006status\030\002 \002(\005\"\323\001\n\014R" +
      "outeRequest\022\013\n\003app\030\001 \001(\t\022\020\n\010platform\030\002 \001" +
      "(\005\022\021\n\tpush_type\030\003 \001(\005\022\023\n\013device_name\030\004 \001" +
      "(\t\022\026\n\016device_version\030\005 \001(\t\022\022\n\nphone_name" +
      "\030\006 \001(\t\022\020\n\010language\030\007 \001(\t\022\024\n\014carrier_name" +
      "\030\010 \001(\t\022\023\n\013app_version\030\t \001(\t\022\023\n\013sdk_versi" +
      "on\030\n \001(\t\"D\n\rRouteResponse\022\014\n\004host\030\001 \002(\t\022" +
      "\021\n\tlong_port\030\002 \002(\005\022\022\n\nshort_port\030\003 \002(\005\"5",
      "\n\017GetTokenRequest\022\017\n\007user_id\030\001 \002(\t\022\021\n\tcl" +
      "ient_id\030\002 \002(\tB#\n\025cn.wildfirechat.protoB\n" +
      "WFCMessage"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_AddFriendRequest_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_AddFriendRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_AddFriendRequest_descriptor,
              new java.lang.String[] { "TargetUid", "Reason", });
          internal_static_Conversation_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_Conversation_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Conversation_descriptor,
              new java.lang.String[] { "Type", "Target", "Line", });
          internal_static_GroupInfo_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_GroupInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GroupInfo_descriptor,
              new java.lang.String[] { "TargetId", "Name", "Portrait", "Owner", "Type", "MemberCount", "Extra", "UpdateDt", "MemberUpdateDt", });
          internal_static_GroupMember_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_GroupMember_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GroupMember_descriptor,
              new java.lang.String[] { "MemberId", "Alias", "Type", "UpdateDt", });
          internal_static_Group_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_Group_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Group_descriptor,
              new java.lang.String[] { "GroupInfo", "Members", });
          internal_static_ChannelInfo_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_ChannelInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ChannelInfo_descriptor,
              new java.lang.String[] { "TargetId", "Name", "Portrait", "Owner", "Status", "Desc", "Extra", "UpdateDt", "Secret", "Callback", "Automatic", });
          internal_static_ModifyChannelInfo_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_ModifyChannelInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ModifyChannelInfo_descriptor,
              new java.lang.String[] { "ChannelId", "Type", "Value", });
          internal_static_TransferChannel_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_TransferChannel_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_TransferChannel_descriptor,
              new java.lang.String[] { "ChannelId", "NewOwner", });
          internal_static_PullChannelInfo_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_PullChannelInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullChannelInfo_descriptor,
              new java.lang.String[] { "ChannelId", "Head", });
          internal_static_PullChannelListener_descriptor =
            getDescriptor().getMessageTypes().get(9);
          internal_static_PullChannelListener_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullChannelListener_descriptor,
              new java.lang.String[] { "ChannelId", "Offset", "Count", });
          internal_static_PullChannelListenerResult_descriptor =
            getDescriptor().getMessageTypes().get(10);
          internal_static_PullChannelListenerResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullChannelListenerResult_descriptor,
              new java.lang.String[] { "TotalCount", "Offset", "Listener", });
          internal_static_ListenChannel_descriptor =
            getDescriptor().getMessageTypes().get(11);
          internal_static_ListenChannel_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ListenChannel_descriptor,
              new java.lang.String[] { "ChannelId", "Listen", });
          internal_static_SearchChannelResult_descriptor =
            getDescriptor().getMessageTypes().get(12);
          internal_static_SearchChannelResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_SearchChannelResult_descriptor,
              new java.lang.String[] { "Channel", "Keyword", });
          internal_static_MessageContent_descriptor =
            getDescriptor().getMessageTypes().get(13);
          internal_static_MessageContent_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_MessageContent_descriptor,
              new java.lang.String[] { "Type", "SearchableContent", "PushContent", "Content", "Data", "MediaType", "RemoteMediaUrl", "PersistFlag", "ExpireDuration", "MentionedType", "MentionedTarget", });
          internal_static_AddGroupMemberRequest_descriptor =
            getDescriptor().getMessageTypes().get(14);
          internal_static_AddGroupMemberRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_AddGroupMemberRequest_descriptor,
              new java.lang.String[] { "GroupId", "AddedMember", "ToLine", "NotifyContent", });
          internal_static_CreateGroupRequest_descriptor =
            getDescriptor().getMessageTypes().get(15);
          internal_static_CreateGroupRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_CreateGroupRequest_descriptor,
              new java.lang.String[] { "Group", "ToLine", "NotifyContent", });
          internal_static_DismissGroupRequest_descriptor =
            getDescriptor().getMessageTypes().get(16);
          internal_static_DismissGroupRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_DismissGroupRequest_descriptor,
              new java.lang.String[] { "GroupId", "ToLine", "NotifyContent", });
          internal_static_FriendRequest_descriptor =
            getDescriptor().getMessageTypes().get(17);
          internal_static_FriendRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_FriendRequest_descriptor,
              new java.lang.String[] { "FromUid", "ToUid", "Reason", "Status", "UpdateDt", "FromReadStatus", "ToReadStatus", });
          internal_static_GeneralResult_descriptor =
            getDescriptor().getMessageTypes().get(18);
          internal_static_GeneralResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GeneralResult_descriptor,
              new java.lang.String[] { "ErrorCode", });
          internal_static_GetUploadTokenResult_descriptor =
            getDescriptor().getMessageTypes().get(19);
          internal_static_GetUploadTokenResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GetUploadTokenResult_descriptor,
              new java.lang.String[] { "Domain", "Token", "Server", });
          internal_static_HandleFriendRequest_descriptor =
            getDescriptor().getMessageTypes().get(20);
          internal_static_HandleFriendRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_HandleFriendRequest_descriptor,
              new java.lang.String[] { "TargetUid", "Status", });
          internal_static_IDBuf_descriptor =
            getDescriptor().getMessageTypes().get(21);
          internal_static_IDBuf_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_IDBuf_descriptor,
              new java.lang.String[] { "Id", });
          internal_static_IDListBuf_descriptor =
            getDescriptor().getMessageTypes().get(22);
          internal_static_IDListBuf_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_IDListBuf_descriptor,
              new java.lang.String[] { "Id", });
          internal_static_Message_descriptor =
            getDescriptor().getMessageTypes().get(23);
          internal_static_Message_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Message_descriptor,
              new java.lang.String[] { "Conversation", "FromUser", "Content", "MessageId", "ServerTimestamp", "ToUser", });
          internal_static_User_descriptor =
            getDescriptor().getMessageTypes().get(24);
          internal_static_User_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_User_descriptor,
              new java.lang.String[] { "Uid", "Name", "DisplayName", "Portrait", "Mobile", "Email", "Address", "Company", "Extra", "UpdateDt", "Gender", "Social", "Type", });
          internal_static_Robot_descriptor =
            getDescriptor().getMessageTypes().get(25);
          internal_static_Robot_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Robot_descriptor,
              new java.lang.String[] { "Uid", "State", "Owner", "Secret", "Callback", "Extra", });
          internal_static_GetRobotsResult_descriptor =
            getDescriptor().getMessageTypes().get(26);
          internal_static_GetRobotsResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GetRobotsResult_descriptor,
              new java.lang.String[] { "Entry", });
          internal_static_Thing_descriptor =
            getDescriptor().getMessageTypes().get(27);
          internal_static_Thing_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Thing_descriptor,
              new java.lang.String[] { "Uid", "State", "Token", "Owner", "Extra", });
          internal_static_GetThingsResult_descriptor =
            getDescriptor().getMessageTypes().get(28);
          internal_static_GetThingsResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GetThingsResult_descriptor,
              new java.lang.String[] { "Entry", });
          internal_static_UploadDeviceTokenRequest_descriptor =
            getDescriptor().getMessageTypes().get(29);
          internal_static_UploadDeviceTokenRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_UploadDeviceTokenRequest_descriptor,
              new java.lang.String[] { "Platform", "AppName", "DeviceToken", "PushType", });
          internal_static_ModifyGroupInfoRequest_descriptor =
            getDescriptor().getMessageTypes().get(30);
          internal_static_ModifyGroupInfoRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ModifyGroupInfoRequest_descriptor,
              new java.lang.String[] { "GroupId", "Type", "Value", "ToLine", "NotifyContent", });
          internal_static_InfoEntry_descriptor =
            getDescriptor().getMessageTypes().get(31);
          internal_static_InfoEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_InfoEntry_descriptor,
              new java.lang.String[] { "Type", "Value", });
          internal_static_ModifyMyInfoRequest_descriptor =
            getDescriptor().getMessageTypes().get(32);
          internal_static_ModifyMyInfoRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ModifyMyInfoRequest_descriptor,
              new java.lang.String[] { "Entry", });
          internal_static_NotifyMessage_descriptor =
            getDescriptor().getMessageTypes().get(33);
          internal_static_NotifyMessage_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_NotifyMessage_descriptor,
              new java.lang.String[] { "Type", "Head", "Target", });
          internal_static_PullMessageRequest_descriptor =
            getDescriptor().getMessageTypes().get(34);
          internal_static_PullMessageRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullMessageRequest_descriptor,
              new java.lang.String[] { "Id", "Type", "Delay", });
          internal_static_PullMessageResult_descriptor =
            getDescriptor().getMessageTypes().get(35);
          internal_static_PullMessageResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullMessageResult_descriptor,
              new java.lang.String[] { "Message", "Current", "Head", });
          internal_static_PullGroupInfoResult_descriptor =
            getDescriptor().getMessageTypes().get(36);
          internal_static_PullGroupInfoResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullGroupInfoResult_descriptor,
              new java.lang.String[] { "Info", });
          internal_static_PullGroupMemberRequest_descriptor =
            getDescriptor().getMessageTypes().get(37);
          internal_static_PullGroupMemberRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullGroupMemberRequest_descriptor,
              new java.lang.String[] { "Target", "Head", });
          internal_static_PullGroupMemberResult_descriptor =
            getDescriptor().getMessageTypes().get(38);
          internal_static_PullGroupMemberResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullGroupMemberResult_descriptor,
              new java.lang.String[] { "Member", });
          internal_static_UserRequest_descriptor =
            getDescriptor().getMessageTypes().get(39);
          internal_static_UserRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_UserRequest_descriptor,
              new java.lang.String[] { "Uid", "UpdateDt", });
          internal_static_PullUserRequest_descriptor =
            getDescriptor().getMessageTypes().get(40);
          internal_static_PullUserRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullUserRequest_descriptor,
              new java.lang.String[] { "Request", });
          internal_static_UserResult_descriptor =
            getDescriptor().getMessageTypes().get(41);
          internal_static_UserResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_UserResult_descriptor,
              new java.lang.String[] { "User", "Code", });
          internal_static_PullUserResult_descriptor =
            getDescriptor().getMessageTypes().get(42);
          internal_static_PullUserResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_PullUserResult_descriptor,
              new java.lang.String[] { "Result", });
          internal_static_QuitGroupRequest_descriptor =
            getDescriptor().getMessageTypes().get(43);
          internal_static_QuitGroupRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_QuitGroupRequest_descriptor,
              new java.lang.String[] { "GroupId", "ToLine", "NotifyContent", });
          internal_static_RemoveGroupMemberRequest_descriptor =
            getDescriptor().getMessageTypes().get(44);
          internal_static_RemoveGroupMemberRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_RemoveGroupMemberRequest_descriptor,
              new java.lang.String[] { "GroupId", "RemovedMember", "ToLine", "NotifyContent", });
          internal_static_TransferGroupRequest_descriptor =
            getDescriptor().getMessageTypes().get(45);
          internal_static_TransferGroupRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_TransferGroupRequest_descriptor,
              new java.lang.String[] { "GroupId", "NewOwner", "ToLine", "NotifyContent", });
          internal_static_ModifyGroupMemberAlias_descriptor =
            getDescriptor().getMessageTypes().get(46);
          internal_static_ModifyGroupMemberAlias_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ModifyGroupMemberAlias_descriptor,
              new java.lang.String[] { "GroupId", "Alias", "ToLine", "NotifyContent", });
          internal_static_UserSettingEntry_descriptor =
            getDescriptor().getMessageTypes().get(47);
          internal_static_UserSettingEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_UserSettingEntry_descriptor,
              new java.lang.String[] { "Scope", "Key", "Value", "UpdateDt", });
          internal_static_ModifyUserSettingReq_descriptor =
            getDescriptor().getMessageTypes().get(48);
          internal_static_ModifyUserSettingReq_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ModifyUserSettingReq_descriptor,
              new java.lang.String[] { "Scope", "Key", "Value", });
          internal_static_Version_descriptor =
            getDescriptor().getMessageTypes().get(49);
          internal_static_Version_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Version_descriptor,
              new java.lang.String[] { "Version", });
          internal_static_GetUserSettingResult_descriptor =
            getDescriptor().getMessageTypes().get(50);
          internal_static_GetUserSettingResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GetUserSettingResult_descriptor,
              new java.lang.String[] { "Entry", });
          internal_static_Friend_descriptor =
            getDescriptor().getMessageTypes().get(51);
          internal_static_Friend_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Friend_descriptor,
              new java.lang.String[] { "Uid", "State", "UpdateDt", });
          internal_static_GetFriendsResult_descriptor =
            getDescriptor().getMessageTypes().get(52);
          internal_static_GetFriendsResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GetFriendsResult_descriptor,
              new java.lang.String[] { "Entry", });
          internal_static_GetFriendRequestResult_descriptor =
            getDescriptor().getMessageTypes().get(53);
          internal_static_GetFriendRequestResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GetFriendRequestResult_descriptor,
              new java.lang.String[] { "Entry", });
          internal_static_ConnectAckPayload_descriptor =
            getDescriptor().getMessageTypes().get(54);
          internal_static_ConnectAckPayload_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ConnectAckPayload_descriptor,
              new java.lang.String[] { "MsgHead", "FriendHead", "FriendRqHead", "SettingHead", "NodeAddr", "NodePort", "ServerTime", });
          internal_static_IMHttpWrapper_descriptor =
            getDescriptor().getMessageTypes().get(55);
          internal_static_IMHttpWrapper_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_IMHttpWrapper_descriptor,
              new java.lang.String[] { "Token", "ClientId", "Request", "Data", });
          internal_static_SearchUserRequest_descriptor =
            getDescriptor().getMessageTypes().get(56);
          internal_static_SearchUserRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_SearchUserRequest_descriptor,
              new java.lang.String[] { "Keyword", "Fuzzy", "Page", });
          internal_static_SearchUserResult_descriptor =
            getDescriptor().getMessageTypes().get(57);
          internal_static_SearchUserResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_SearchUserResult_descriptor,
              new java.lang.String[] { "Entry", });
          internal_static_GetChatroomInfoRequest_descriptor =
            getDescriptor().getMessageTypes().get(58);
          internal_static_GetChatroomInfoRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GetChatroomInfoRequest_descriptor,
              new java.lang.String[] { "ChatroomId", "UpdateDt", });
          internal_static_ChatroomInfo_descriptor =
            getDescriptor().getMessageTypes().get(59);
          internal_static_ChatroomInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ChatroomInfo_descriptor,
              new java.lang.String[] { "Title", "Desc", "Portrait", "MemberCount", "CreateDt", "UpdateDt", "Extra", "State", });
          internal_static_GetChatroomMemberInfoRequest_descriptor =
            getDescriptor().getMessageTypes().get(60);
          internal_static_GetChatroomMemberInfoRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GetChatroomMemberInfoRequest_descriptor,
              new java.lang.String[] { "ChatroomId", "MaxCount", });
          internal_static_ChatroomMemberInfo_descriptor =
            getDescriptor().getMessageTypes().get(61);
          internal_static_ChatroomMemberInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ChatroomMemberInfo_descriptor,
              new java.lang.String[] { "MemberCount", "Members", });
          internal_static_INT64Buf_descriptor =
            getDescriptor().getMessageTypes().get(62);
          internal_static_INT64Buf_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_INT64Buf_descriptor,
              new java.lang.String[] { "Id", });
          internal_static_NotifyRecallMessage_descriptor =
            getDescriptor().getMessageTypes().get(63);
          internal_static_NotifyRecallMessage_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_NotifyRecallMessage_descriptor,
              new java.lang.String[] { "Id", "FromUser", });
          internal_static_BlackUserRequest_descriptor =
            getDescriptor().getMessageTypes().get(64);
          internal_static_BlackUserRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_BlackUserRequest_descriptor,
              new java.lang.String[] { "Uid", "Status", });
          internal_static_RouteRequest_descriptor =
            getDescriptor().getMessageTypes().get(65);
          internal_static_RouteRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_RouteRequest_descriptor,
              new java.lang.String[] { "App", "Platform", "PushType", "DeviceName", "DeviceVersion", "PhoneName", "Language", "CarrierName", "AppVersion", "SdkVersion", });
          internal_static_RouteResponse_descriptor =
            getDescriptor().getMessageTypes().get(66);
          internal_static_RouteResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_RouteResponse_descriptor,
              new java.lang.String[] { "Host", "LongPort", "ShortPort", });
          internal_static_GetTokenRequest_descriptor =
            getDescriptor().getMessageTypes().get(67);
          internal_static_GetTokenRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GetTokenRequest_descriptor,
              new java.lang.String[] { "UserId", "ClientId", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
