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

package com.iamteer;

public final class Wcf {
  private Wcf() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code wcf.Functions}
   */
  public enum Functions
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>FUNC_RESERVED = 0;</code>
     */
    FUNC_RESERVED(0),
    /**
     * <code>FUNC_IS_LOGIN = 1;</code>
     */
    FUNC_IS_LOGIN(1),
    /**
     * <code>FUNC_GET_SELF_WXID = 16;</code>
     */
    FUNC_GET_SELF_WXID(16),
    /**
     * <code>FUNC_GET_MSG_TYPES = 17;</code>
     */
    FUNC_GET_MSG_TYPES(17),
    /**
     * <code>FUNC_GET_CONTACTS = 18;</code>
     */
    FUNC_GET_CONTACTS(18),
    /**
     * <code>FUNC_GET_DB_NAMES = 19;</code>
     */
    FUNC_GET_DB_NAMES(19),
    /**
     * <code>FUNC_GET_DB_TABLES = 20;</code>
     */
    FUNC_GET_DB_TABLES(20),
    /**
     * <code>FUNC_GET_USER_INFO = 21;</code>
     */
    FUNC_GET_USER_INFO(21),
    /**
     * <code>FUNC_GET_AUDIO_MSG = 22;</code>
     */
    FUNC_GET_AUDIO_MSG(22),
    /**
     * <code>FUNC_SEND_TXT = 32;</code>
     */
    FUNC_SEND_TXT(32),
    /**
     * <code>FUNC_SEND_IMG = 33;</code>
     */
    FUNC_SEND_IMG(33),
    /**
     * <code>FUNC_SEND_FILE = 34;</code>
     */
    FUNC_SEND_FILE(34),
    /**
     * <code>FUNC_SEND_XML = 35;</code>
     */
    FUNC_SEND_XML(35),
    /**
     * <code>FUNC_SEND_EMOTION = 36;</code>
     */
    FUNC_SEND_EMOTION(36),
    /**
     * <code>FUNC_SEND_RICH_TXT = 37;</code>
     */
    FUNC_SEND_RICH_TXT(37),
    /**
     * <code>FUNC_SEND_PAT_MSG = 38;</code>
     */
    FUNC_SEND_PAT_MSG(38),
    /**
     * <code>FUNC_FORWARD_MSG = 39;</code>
     */
    FUNC_FORWARD_MSG(39),
    /**
     * <code>FUNC_ENABLE_RECV_TXT = 48;</code>
     */
    FUNC_ENABLE_RECV_TXT(48),
    /**
     * <code>FUNC_DISABLE_RECV_TXT = 64;</code>
     */
    FUNC_DISABLE_RECV_TXT(64),
    /**
     * <code>FUNC_EXEC_DB_QUERY = 80;</code>
     */
    FUNC_EXEC_DB_QUERY(80),
    /**
     * <code>FUNC_ACCEPT_FRIEND = 81;</code>
     */
    FUNC_ACCEPT_FRIEND(81),
    /**
     * <code>FUNC_RECV_TRANSFER = 82;</code>
     */
    FUNC_RECV_TRANSFER(82),
    /**
     * <code>FUNC_REFRESH_PYQ = 83;</code>
     */
    FUNC_REFRESH_PYQ(83),
    /**
     * <code>FUNC_DOWNLOAD_ATTACH = 84;</code>
     */
    FUNC_DOWNLOAD_ATTACH(84),
    /**
     * <code>FUNC_GET_CONTACT_INFO = 85;</code>
     */
    FUNC_GET_CONTACT_INFO(85),
    /**
     * <code>FUNC_REVOKE_MSG = 86;</code>
     */
    FUNC_REVOKE_MSG(86),
    /**
     * <code>FUNC_REFRESH_QRCODE = 87;</code>
     */
    FUNC_REFRESH_QRCODE(87),
    /**
     * <code>FUNC_DECRYPT_IMAGE = 96;</code>
     */
    FUNC_DECRYPT_IMAGE(96),
    /**
     * <code>FUNC_EXEC_OCR = 97;</code>
     */
    FUNC_EXEC_OCR(97),
    /**
     * <code>FUNC_ADD_ROOM_MEMBERS = 112;</code>
     */
    FUNC_ADD_ROOM_MEMBERS(112),
    /**
     * <code>FUNC_DEL_ROOM_MEMBERS = 113;</code>
     */
    FUNC_DEL_ROOM_MEMBERS(113),
    /**
     * <code>FUNC_INV_ROOM_MEMBERS = 114;</code>
     */
    FUNC_INV_ROOM_MEMBERS(114),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>FUNC_RESERVED = 0;</code>
     */
    public static final int FUNC_RESERVED_VALUE = 0;
    /**
     * <code>FUNC_IS_LOGIN = 1;</code>
     */
    public static final int FUNC_IS_LOGIN_VALUE = 1;
    /**
     * <code>FUNC_GET_SELF_WXID = 16;</code>
     */
    public static final int FUNC_GET_SELF_WXID_VALUE = 16;
    /**
     * <code>FUNC_GET_MSG_TYPES = 17;</code>
     */
    public static final int FUNC_GET_MSG_TYPES_VALUE = 17;
    /**
     * <code>FUNC_GET_CONTACTS = 18;</code>
     */
    public static final int FUNC_GET_CONTACTS_VALUE = 18;
    /**
     * <code>FUNC_GET_DB_NAMES = 19;</code>
     */
    public static final int FUNC_GET_DB_NAMES_VALUE = 19;
    /**
     * <code>FUNC_GET_DB_TABLES = 20;</code>
     */
    public static final int FUNC_GET_DB_TABLES_VALUE = 20;
    /**
     * <code>FUNC_GET_USER_INFO = 21;</code>
     */
    public static final int FUNC_GET_USER_INFO_VALUE = 21;
    /**
     * <code>FUNC_GET_AUDIO_MSG = 22;</code>
     */
    public static final int FUNC_GET_AUDIO_MSG_VALUE = 22;
    /**
     * <code>FUNC_SEND_TXT = 32;</code>
     */
    public static final int FUNC_SEND_TXT_VALUE = 32;
    /**
     * <code>FUNC_SEND_IMG = 33;</code>
     */
    public static final int FUNC_SEND_IMG_VALUE = 33;
    /**
     * <code>FUNC_SEND_FILE = 34;</code>
     */
    public static final int FUNC_SEND_FILE_VALUE = 34;
    /**
     * <code>FUNC_SEND_XML = 35;</code>
     */
    public static final int FUNC_SEND_XML_VALUE = 35;
    /**
     * <code>FUNC_SEND_EMOTION = 36;</code>
     */
    public static final int FUNC_SEND_EMOTION_VALUE = 36;
    /**
     * <code>FUNC_SEND_RICH_TXT = 37;</code>
     */
    public static final int FUNC_SEND_RICH_TXT_VALUE = 37;
    /**
     * <code>FUNC_SEND_PAT_MSG = 38;</code>
     */
    public static final int FUNC_SEND_PAT_MSG_VALUE = 38;
    /**
     * <code>FUNC_FORWARD_MSG = 39;</code>
     */
    public static final int FUNC_FORWARD_MSG_VALUE = 39;
    /**
     * <code>FUNC_ENABLE_RECV_TXT = 48;</code>
     */
    public static final int FUNC_ENABLE_RECV_TXT_VALUE = 48;
    /**
     * <code>FUNC_DISABLE_RECV_TXT = 64;</code>
     */
    public static final int FUNC_DISABLE_RECV_TXT_VALUE = 64;
    /**
     * <code>FUNC_EXEC_DB_QUERY = 80;</code>
     */
    public static final int FUNC_EXEC_DB_QUERY_VALUE = 80;
    /**
     * <code>FUNC_ACCEPT_FRIEND = 81;</code>
     */
    public static final int FUNC_ACCEPT_FRIEND_VALUE = 81;
    /**
     * <code>FUNC_RECV_TRANSFER = 82;</code>
     */
    public static final int FUNC_RECV_TRANSFER_VALUE = 82;
    /**
     * <code>FUNC_REFRESH_PYQ = 83;</code>
     */
    public static final int FUNC_REFRESH_PYQ_VALUE = 83;
    /**
     * <code>FUNC_DOWNLOAD_ATTACH = 84;</code>
     */
    public static final int FUNC_DOWNLOAD_ATTACH_VALUE = 84;
    /**
     * <code>FUNC_GET_CONTACT_INFO = 85;</code>
     */
    public static final int FUNC_GET_CONTACT_INFO_VALUE = 85;
    /**
     * <code>FUNC_REVOKE_MSG = 86;</code>
     */
    public static final int FUNC_REVOKE_MSG_VALUE = 86;
    /**
     * <code>FUNC_REFRESH_QRCODE = 87;</code>
     */
    public static final int FUNC_REFRESH_QRCODE_VALUE = 87;
    /**
     * <code>FUNC_DECRYPT_IMAGE = 96;</code>
     */
    public static final int FUNC_DECRYPT_IMAGE_VALUE = 96;
    /**
     * <code>FUNC_EXEC_OCR = 97;</code>
     */
    public static final int FUNC_EXEC_OCR_VALUE = 97;
    /**
     * <code>FUNC_ADD_ROOM_MEMBERS = 112;</code>
     */
    public static final int FUNC_ADD_ROOM_MEMBERS_VALUE = 112;
    /**
     * <code>FUNC_DEL_ROOM_MEMBERS = 113;</code>
     */
    public static final int FUNC_DEL_ROOM_MEMBERS_VALUE = 113;
    /**
     * <code>FUNC_INV_ROOM_MEMBERS = 114;</code>
     */
    public static final int FUNC_INV_ROOM_MEMBERS_VALUE = 114;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static Functions valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static Functions forNumber(int value) {
      switch (value) {
        case 0: return FUNC_RESERVED;
        case 1: return FUNC_IS_LOGIN;
        case 16: return FUNC_GET_SELF_WXID;
        case 17: return FUNC_GET_MSG_TYPES;
        case 18: return FUNC_GET_CONTACTS;
        case 19: return FUNC_GET_DB_NAMES;
        case 20: return FUNC_GET_DB_TABLES;
        case 21: return FUNC_GET_USER_INFO;
        case 22: return FUNC_GET_AUDIO_MSG;
        case 32: return FUNC_SEND_TXT;
        case 33: return FUNC_SEND_IMG;
        case 34: return FUNC_SEND_FILE;
        case 35: return FUNC_SEND_XML;
        case 36: return FUNC_SEND_EMOTION;
        case 37: return FUNC_SEND_RICH_TXT;
        case 38: return FUNC_SEND_PAT_MSG;
        case 39: return FUNC_FORWARD_MSG;
        case 48: return FUNC_ENABLE_RECV_TXT;
        case 64: return FUNC_DISABLE_RECV_TXT;
        case 80: return FUNC_EXEC_DB_QUERY;
        case 81: return FUNC_ACCEPT_FRIEND;
        case 82: return FUNC_RECV_TRANSFER;
        case 83: return FUNC_REFRESH_PYQ;
        case 84: return FUNC_DOWNLOAD_ATTACH;
        case 85: return FUNC_GET_CONTACT_INFO;
        case 86: return FUNC_REVOKE_MSG;
        case 87: return FUNC_REFRESH_QRCODE;
        case 96: return FUNC_DECRYPT_IMAGE;
        case 97: return FUNC_EXEC_OCR;
        case 112: return FUNC_ADD_ROOM_MEMBERS;
        case 113: return FUNC_DEL_ROOM_MEMBERS;
        case 114: return FUNC_INV_ROOM_MEMBERS;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<Functions>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Functions> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Functions>() {
            public Functions findValueByNumber(int number) {
              return Functions.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.iamteer.Wcf.getDescriptor().getEnumTypes().get(0);
    }

    private static final Functions[] VALUES = values();

    public static Functions valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private Functions(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:wcf.Functions)
  }

  public interface RequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.Request)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.wcf.Functions func = 1;</code>
     * @return The enum numeric value on the wire for func.
     */
    int getFuncValue();
    /**
     * <code>.wcf.Functions func = 1;</code>
     * @return The func.
     */
    com.iamteer.Wcf.Functions getFunc();

    /**
     * <pre>
     * 无参数
     * </pre>
     *
     * <code>.wcf.Empty empty = 2;</code>
     * @return Whether the empty field is set.
     */
    boolean hasEmpty();
    /**
     * <pre>
     * 无参数
     * </pre>
     *
     * <code>.wcf.Empty empty = 2;</code>
     * @return The empty.
     */
    com.iamteer.Wcf.Empty getEmpty();
    /**
     * <pre>
     * 无参数
     * </pre>
     *
     * <code>.wcf.Empty empty = 2;</code>
     */
    com.iamteer.Wcf.EmptyOrBuilder getEmptyOrBuilder();

    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return Whether the str field is set.
     */
    boolean hasStr();
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return The str.
     */
    java.lang.String getStr();
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return The bytes for str.
     */
    com.google.protobuf.ByteString
        getStrBytes();

    /**
     * <pre>
     * 发送文本消息结构
     * </pre>
     *
     * <code>.wcf.TextMsg txt = 4;</code>
     * @return Whether the txt field is set.
     */
    boolean hasTxt();
    /**
     * <pre>
     * 发送文本消息结构
     * </pre>
     *
     * <code>.wcf.TextMsg txt = 4;</code>
     * @return The txt.
     */
    com.iamteer.Wcf.TextMsg getTxt();
    /**
     * <pre>
     * 发送文本消息结构
     * </pre>
     *
     * <code>.wcf.TextMsg txt = 4;</code>
     */
    com.iamteer.Wcf.TextMsgOrBuilder getTxtOrBuilder();

    /**
     * <pre>
     * 发送图片、文件消息结构
     * </pre>
     *
     * <code>.wcf.PathMsg file = 5;</code>
     * @return Whether the file field is set.
     */
    boolean hasFile();
    /**
     * <pre>
     * 发送图片、文件消息结构
     * </pre>
     *
     * <code>.wcf.PathMsg file = 5;</code>
     * @return The file.
     */
    com.iamteer.Wcf.PathMsg getFile();
    /**
     * <pre>
     * 发送图片、文件消息结构
     * </pre>
     *
     * <code>.wcf.PathMsg file = 5;</code>
     */
    com.iamteer.Wcf.PathMsgOrBuilder getFileOrBuilder();

    /**
     * <pre>
     * 数据库查询参数结构
     * </pre>
     *
     * <code>.wcf.DbQuery query = 6;</code>
     * @return Whether the query field is set.
     */
    boolean hasQuery();
    /**
     * <pre>
     * 数据库查询参数结构
     * </pre>
     *
     * <code>.wcf.DbQuery query = 6;</code>
     * @return The query.
     */
    com.iamteer.Wcf.DbQuery getQuery();
    /**
     * <pre>
     * 数据库查询参数结构
     * </pre>
     *
     * <code>.wcf.DbQuery query = 6;</code>
     */
    com.iamteer.Wcf.DbQueryOrBuilder getQueryOrBuilder();

    /**
     * <pre>
     * 通过好友验证参数结构
     * </pre>
     *
     * <code>.wcf.Verification v = 7;</code>
     * @return Whether the v field is set.
     */
    boolean hasV();
    /**
     * <pre>
     * 通过好友验证参数结构
     * </pre>
     *
     * <code>.wcf.Verification v = 7;</code>
     * @return The v.
     */
    com.iamteer.Wcf.Verification getV();
    /**
     * <pre>
     * 通过好友验证参数结构
     * </pre>
     *
     * <code>.wcf.Verification v = 7;</code>
     */
    com.iamteer.Wcf.VerificationOrBuilder getVOrBuilder();

    /**
     * <pre>
     * 群成员管理，添加、删除、邀请
     * </pre>
     *
     * <code>.wcf.MemberMgmt m = 8;</code>
     * @return Whether the m field is set.
     */
    boolean hasM();
    /**
     * <pre>
     * 群成员管理，添加、删除、邀请
     * </pre>
     *
     * <code>.wcf.MemberMgmt m = 8;</code>
     * @return The m.
     */
    com.iamteer.Wcf.MemberMgmt getM();
    /**
     * <pre>
     * 群成员管理，添加、删除、邀请
     * </pre>
     *
     * <code>.wcf.MemberMgmt m = 8;</code>
     */
    com.iamteer.Wcf.MemberMgmtOrBuilder getMOrBuilder();

    /**
     * <pre>
     * XML参数结构
     * </pre>
     *
     * <code>.wcf.XmlMsg xml = 9;</code>
     * @return Whether the xml field is set.
     */
    boolean hasXml();
    /**
     * <pre>
     * XML参数结构
     * </pre>
     *
     * <code>.wcf.XmlMsg xml = 9;</code>
     * @return The xml.
     */
    com.iamteer.Wcf.XmlMsg getXml();
    /**
     * <pre>
     * XML参数结构
     * </pre>
     *
     * <code>.wcf.XmlMsg xml = 9;</code>
     */
    com.iamteer.Wcf.XmlMsgOrBuilder getXmlOrBuilder();

    /**
     * <pre>
     * 解密图片参数结构
     * </pre>
     *
     * <code>.wcf.DecPath dec = 10;</code>
     * @return Whether the dec field is set.
     */
    boolean hasDec();
    /**
     * <pre>
     * 解密图片参数结构
     * </pre>
     *
     * <code>.wcf.DecPath dec = 10;</code>
     * @return The dec.
     */
    com.iamteer.Wcf.DecPath getDec();
    /**
     * <pre>
     * 解密图片参数结构
     * </pre>
     *
     * <code>.wcf.DecPath dec = 10;</code>
     */
    com.iamteer.Wcf.DecPathOrBuilder getDecOrBuilder();

    /**
     * <pre>
     * 接收转账参数结构
     * </pre>
     *
     * <code>.wcf.Transfer tf = 11;</code>
     * @return Whether the tf field is set.
     */
    boolean hasTf();
    /**
     * <pre>
     * 接收转账参数结构
     * </pre>
     *
     * <code>.wcf.Transfer tf = 11;</code>
     * @return The tf.
     */
    com.iamteer.Wcf.Transfer getTf();
    /**
     * <pre>
     * 接收转账参数结构
     * </pre>
     *
     * <code>.wcf.Transfer tf = 11;</code>
     */
    com.iamteer.Wcf.TransferOrBuilder getTfOrBuilder();

    /**
     * <pre>
     * 64 位整数，通用
     * </pre>
     *
     * <code>uint64 ui64 = 12 [jstype = JS_STRING];</code>
     * @return Whether the ui64 field is set.
     */
    boolean hasUi64();
    /**
     * <pre>
     * 64 位整数，通用
     * </pre>
     *
     * <code>uint64 ui64 = 12 [jstype = JS_STRING];</code>
     * @return The ui64.
     */
    long getUi64();

    /**
     * <pre>
     * 布尔值
     * </pre>
     *
     * <code>bool flag = 13;</code>
     * @return Whether the flag field is set.
     */
    boolean hasFlag();
    /**
     * <pre>
     * 布尔值
     * </pre>
     *
     * <code>bool flag = 13;</code>
     * @return The flag.
     */
    boolean getFlag();

    /**
     * <pre>
     * 下载图片、视频、文件参数结构
     * </pre>
     *
     * <code>.wcf.AttachMsg att = 14;</code>
     * @return Whether the att field is set.
     */
    boolean hasAtt();
    /**
     * <pre>
     * 下载图片、视频、文件参数结构
     * </pre>
     *
     * <code>.wcf.AttachMsg att = 14;</code>
     * @return The att.
     */
    com.iamteer.Wcf.AttachMsg getAtt();
    /**
     * <pre>
     * 下载图片、视频、文件参数结构
     * </pre>
     *
     * <code>.wcf.AttachMsg att = 14;</code>
     */
    com.iamteer.Wcf.AttachMsgOrBuilder getAttOrBuilder();

    /**
     * <pre>
     * 保存语音参数结构
     * </pre>
     *
     * <code>.wcf.AudioMsg am = 15;</code>
     * @return Whether the am field is set.
     */
    boolean hasAm();
    /**
     * <pre>
     * 保存语音参数结构
     * </pre>
     *
     * <code>.wcf.AudioMsg am = 15;</code>
     * @return The am.
     */
    com.iamteer.Wcf.AudioMsg getAm();
    /**
     * <pre>
     * 保存语音参数结构
     * </pre>
     *
     * <code>.wcf.AudioMsg am = 15;</code>
     */
    com.iamteer.Wcf.AudioMsgOrBuilder getAmOrBuilder();

    /**
     * <pre>
     * 发送卡片消息结构
     * </pre>
     *
     * <code>.wcf.RichText rt = 16;</code>
     * @return Whether the rt field is set.
     */
    boolean hasRt();
    /**
     * <pre>
     * 发送卡片消息结构
     * </pre>
     *
     * <code>.wcf.RichText rt = 16;</code>
     * @return The rt.
     */
    com.iamteer.Wcf.RichText getRt();
    /**
     * <pre>
     * 发送卡片消息结构
     * </pre>
     *
     * <code>.wcf.RichText rt = 16;</code>
     */
    com.iamteer.Wcf.RichTextOrBuilder getRtOrBuilder();

    /**
     * <pre>
     * 发送拍一拍参数结构
     * </pre>
     *
     * <code>.wcf.PatMsg pm = 17;</code>
     * @return Whether the pm field is set.
     */
    boolean hasPm();
    /**
     * <pre>
     * 发送拍一拍参数结构
     * </pre>
     *
     * <code>.wcf.PatMsg pm = 17;</code>
     * @return The pm.
     */
    com.iamteer.Wcf.PatMsg getPm();
    /**
     * <pre>
     * 发送拍一拍参数结构
     * </pre>
     *
     * <code>.wcf.PatMsg pm = 17;</code>
     */
    com.iamteer.Wcf.PatMsgOrBuilder getPmOrBuilder();

    /**
     * <pre>
     * 转发消息参数结构
     * </pre>
     *
     * <code>.wcf.ForwardMsg fm = 18;</code>
     * @return Whether the fm field is set.
     */
    boolean hasFm();
    /**
     * <pre>
     * 转发消息参数结构
     * </pre>
     *
     * <code>.wcf.ForwardMsg fm = 18;</code>
     * @return The fm.
     */
    com.iamteer.Wcf.ForwardMsg getFm();
    /**
     * <pre>
     * 转发消息参数结构
     * </pre>
     *
     * <code>.wcf.ForwardMsg fm = 18;</code>
     */
    com.iamteer.Wcf.ForwardMsgOrBuilder getFmOrBuilder();

    public com.iamteer.Wcf.Request.MsgCase getMsgCase();
  }
  /**
   * Protobuf type {@code wcf.Request}
   */
  public static final class Request extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.Request)
      RequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Request.newBuilder() to construct.
    private Request(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Request() {
      func_ = 0;
    }

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

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

              func_ = rawValue;
              break;
            }
            case 18: {
              com.iamteer.Wcf.Empty.Builder subBuilder = null;
              if (msgCase_ == 2) {
                subBuilder = ((com.iamteer.Wcf.Empty) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.Empty.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.Empty) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 2;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              msgCase_ = 3;
              msg_ = s;
              break;
            }
            case 34: {
              com.iamteer.Wcf.TextMsg.Builder subBuilder = null;
              if (msgCase_ == 4) {
                subBuilder = ((com.iamteer.Wcf.TextMsg) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.TextMsg.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.TextMsg) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 4;
              break;
            }
            case 42: {
              com.iamteer.Wcf.PathMsg.Builder subBuilder = null;
              if (msgCase_ == 5) {
                subBuilder = ((com.iamteer.Wcf.PathMsg) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.PathMsg.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.PathMsg) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 5;
              break;
            }
            case 50: {
              com.iamteer.Wcf.DbQuery.Builder subBuilder = null;
              if (msgCase_ == 6) {
                subBuilder = ((com.iamteer.Wcf.DbQuery) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.DbQuery.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.DbQuery) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 6;
              break;
            }
            case 58: {
              com.iamteer.Wcf.Verification.Builder subBuilder = null;
              if (msgCase_ == 7) {
                subBuilder = ((com.iamteer.Wcf.Verification) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.Verification.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.Verification) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 7;
              break;
            }
            case 66: {
              com.iamteer.Wcf.MemberMgmt.Builder subBuilder = null;
              if (msgCase_ == 8) {
                subBuilder = ((com.iamteer.Wcf.MemberMgmt) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.MemberMgmt.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.MemberMgmt) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 8;
              break;
            }
            case 74: {
              com.iamteer.Wcf.XmlMsg.Builder subBuilder = null;
              if (msgCase_ == 9) {
                subBuilder = ((com.iamteer.Wcf.XmlMsg) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.XmlMsg.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.XmlMsg) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 9;
              break;
            }
            case 82: {
              com.iamteer.Wcf.DecPath.Builder subBuilder = null;
              if (msgCase_ == 10) {
                subBuilder = ((com.iamteer.Wcf.DecPath) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.DecPath.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.DecPath) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 10;
              break;
            }
            case 90: {
              com.iamteer.Wcf.Transfer.Builder subBuilder = null;
              if (msgCase_ == 11) {
                subBuilder = ((com.iamteer.Wcf.Transfer) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.Transfer.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.Transfer) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 11;
              break;
            }
            case 96: {
              msg_ = input.readUInt64();
              msgCase_ = 12;
              break;
            }
            case 104: {
              msg_ = input.readBool();
              msgCase_ = 13;
              break;
            }
            case 114: {
              com.iamteer.Wcf.AttachMsg.Builder subBuilder = null;
              if (msgCase_ == 14) {
                subBuilder = ((com.iamteer.Wcf.AttachMsg) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.AttachMsg.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.AttachMsg) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 14;
              break;
            }
            case 122: {
              com.iamteer.Wcf.AudioMsg.Builder subBuilder = null;
              if (msgCase_ == 15) {
                subBuilder = ((com.iamteer.Wcf.AudioMsg) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.AudioMsg.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.AudioMsg) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 15;
              break;
            }
            case 130: {
              com.iamteer.Wcf.RichText.Builder subBuilder = null;
              if (msgCase_ == 16) {
                subBuilder = ((com.iamteer.Wcf.RichText) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.RichText.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.RichText) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 16;
              break;
            }
            case 138: {
              com.iamteer.Wcf.PatMsg.Builder subBuilder = null;
              if (msgCase_ == 17) {
                subBuilder = ((com.iamteer.Wcf.PatMsg) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.PatMsg.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.PatMsg) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 17;
              break;
            }
            case 146: {
              com.iamteer.Wcf.ForwardMsg.Builder subBuilder = null;
              if (msgCase_ == 18) {
                subBuilder = ((com.iamteer.Wcf.ForwardMsg) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.ForwardMsg.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.ForwardMsg) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 18;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_Request_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_Request_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.Request.class, com.iamteer.Wcf.Request.Builder.class);
    }

    private int msgCase_ = 0;
    private java.lang.Object msg_;
    public enum MsgCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      EMPTY(2),
      STR(3),
      TXT(4),
      FILE(5),
      QUERY(6),
      V(7),
      M(8),
      XML(9),
      DEC(10),
      TF(11),
      UI64(12),
      FLAG(13),
      ATT(14),
      AM(15),
      RT(16),
      PM(17),
      FM(18),
      MSG_NOT_SET(0);
      private final int value;
      private MsgCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static MsgCase valueOf(int value) {
        return forNumber(value);
      }

      public static MsgCase forNumber(int value) {
        switch (value) {
          case 2: return EMPTY;
          case 3: return STR;
          case 4: return TXT;
          case 5: return FILE;
          case 6: return QUERY;
          case 7: return V;
          case 8: return M;
          case 9: return XML;
          case 10: return DEC;
          case 11: return TF;
          case 12: return UI64;
          case 13: return FLAG;
          case 14: return ATT;
          case 15: return AM;
          case 16: return RT;
          case 17: return PM;
          case 18: return FM;
          case 0: return MSG_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public MsgCase
    getMsgCase() {
      return MsgCase.forNumber(
          msgCase_);
    }

    public static final int FUNC_FIELD_NUMBER = 1;
    private int func_;
    /**
     * <code>.wcf.Functions func = 1;</code>
     * @return The enum numeric value on the wire for func.
     */
    @java.lang.Override public int getFuncValue() {
      return func_;
    }
    /**
     * <code>.wcf.Functions func = 1;</code>
     * @return The func.
     */
    @java.lang.Override public com.iamteer.Wcf.Functions getFunc() {
      @SuppressWarnings("deprecation")
      com.iamteer.Wcf.Functions result = com.iamteer.Wcf.Functions.valueOf(func_);
      return result == null ? com.iamteer.Wcf.Functions.UNRECOGNIZED : result;
    }

    public static final int EMPTY_FIELD_NUMBER = 2;
    /**
     * <pre>
     * 无参数
     * </pre>
     *
     * <code>.wcf.Empty empty = 2;</code>
     * @return Whether the empty field is set.
     */
    @java.lang.Override
    public boolean hasEmpty() {
      return msgCase_ == 2;
    }
    /**
     * <pre>
     * 无参数
     * </pre>
     *
     * <code>.wcf.Empty empty = 2;</code>
     * @return The empty.
     */
    @java.lang.Override
    public com.iamteer.Wcf.Empty getEmpty() {
      if (msgCase_ == 2) {
         return (com.iamteer.Wcf.Empty) msg_;
      }
      return com.iamteer.Wcf.Empty.getDefaultInstance();
    }
    /**
     * <pre>
     * 无参数
     * </pre>
     *
     * <code>.wcf.Empty empty = 2;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.EmptyOrBuilder getEmptyOrBuilder() {
      if (msgCase_ == 2) {
         return (com.iamteer.Wcf.Empty) msg_;
      }
      return com.iamteer.Wcf.Empty.getDefaultInstance();
    }

    public static final int STR_FIELD_NUMBER = 3;
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return Whether the str field is set.
     */
    public boolean hasStr() {
      return msgCase_ == 3;
    }
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return The str.
     */
    public java.lang.String getStr() {
      java.lang.Object ref = "";
      if (msgCase_ == 3) {
        ref = msg_;
      }
      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 (msgCase_ == 3) {
          msg_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return The bytes for str.
     */
    public com.google.protobuf.ByteString
        getStrBytes() {
      java.lang.Object ref = "";
      if (msgCase_ == 3) {
        ref = msg_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (msgCase_ == 3) {
          msg_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TXT_FIELD_NUMBER = 4;
    /**
     * <pre>
     * 发送文本消息结构
     * </pre>
     *
     * <code>.wcf.TextMsg txt = 4;</code>
     * @return Whether the txt field is set.
     */
    @java.lang.Override
    public boolean hasTxt() {
      return msgCase_ == 4;
    }
    /**
     * <pre>
     * 发送文本消息结构
     * </pre>
     *
     * <code>.wcf.TextMsg txt = 4;</code>
     * @return The txt.
     */
    @java.lang.Override
    public com.iamteer.Wcf.TextMsg getTxt() {
      if (msgCase_ == 4) {
         return (com.iamteer.Wcf.TextMsg) msg_;
      }
      return com.iamteer.Wcf.TextMsg.getDefaultInstance();
    }
    /**
     * <pre>
     * 发送文本消息结构
     * </pre>
     *
     * <code>.wcf.TextMsg txt = 4;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.TextMsgOrBuilder getTxtOrBuilder() {
      if (msgCase_ == 4) {
         return (com.iamteer.Wcf.TextMsg) msg_;
      }
      return com.iamteer.Wcf.TextMsg.getDefaultInstance();
    }

    public static final int FILE_FIELD_NUMBER = 5;
    /**
     * <pre>
     * 发送图片、文件消息结构
     * </pre>
     *
     * <code>.wcf.PathMsg file = 5;</code>
     * @return Whether the file field is set.
     */
    @java.lang.Override
    public boolean hasFile() {
      return msgCase_ == 5;
    }
    /**
     * <pre>
     * 发送图片、文件消息结构
     * </pre>
     *
     * <code>.wcf.PathMsg file = 5;</code>
     * @return The file.
     */
    @java.lang.Override
    public com.iamteer.Wcf.PathMsg getFile() {
      if (msgCase_ == 5) {
         return (com.iamteer.Wcf.PathMsg) msg_;
      }
      return com.iamteer.Wcf.PathMsg.getDefaultInstance();
    }
    /**
     * <pre>
     * 发送图片、文件消息结构
     * </pre>
     *
     * <code>.wcf.PathMsg file = 5;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.PathMsgOrBuilder getFileOrBuilder() {
      if (msgCase_ == 5) {
         return (com.iamteer.Wcf.PathMsg) msg_;
      }
      return com.iamteer.Wcf.PathMsg.getDefaultInstance();
    }

    public static final int QUERY_FIELD_NUMBER = 6;
    /**
     * <pre>
     * 数据库查询参数结构
     * </pre>
     *
     * <code>.wcf.DbQuery query = 6;</code>
     * @return Whether the query field is set.
     */
    @java.lang.Override
    public boolean hasQuery() {
      return msgCase_ == 6;
    }
    /**
     * <pre>
     * 数据库查询参数结构
     * </pre>
     *
     * <code>.wcf.DbQuery query = 6;</code>
     * @return The query.
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbQuery getQuery() {
      if (msgCase_ == 6) {
         return (com.iamteer.Wcf.DbQuery) msg_;
      }
      return com.iamteer.Wcf.DbQuery.getDefaultInstance();
    }
    /**
     * <pre>
     * 数据库查询参数结构
     * </pre>
     *
     * <code>.wcf.DbQuery query = 6;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbQueryOrBuilder getQueryOrBuilder() {
      if (msgCase_ == 6) {
         return (com.iamteer.Wcf.DbQuery) msg_;
      }
      return com.iamteer.Wcf.DbQuery.getDefaultInstance();
    }

    public static final int V_FIELD_NUMBER = 7;
    /**
     * <pre>
     * 通过好友验证参数结构
     * </pre>
     *
     * <code>.wcf.Verification v = 7;</code>
     * @return Whether the v field is set.
     */
    @java.lang.Override
    public boolean hasV() {
      return msgCase_ == 7;
    }
    /**
     * <pre>
     * 通过好友验证参数结构
     * </pre>
     *
     * <code>.wcf.Verification v = 7;</code>
     * @return The v.
     */
    @java.lang.Override
    public com.iamteer.Wcf.Verification getV() {
      if (msgCase_ == 7) {
         return (com.iamteer.Wcf.Verification) msg_;
      }
      return com.iamteer.Wcf.Verification.getDefaultInstance();
    }
    /**
     * <pre>
     * 通过好友验证参数结构
     * </pre>
     *
     * <code>.wcf.Verification v = 7;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.VerificationOrBuilder getVOrBuilder() {
      if (msgCase_ == 7) {
         return (com.iamteer.Wcf.Verification) msg_;
      }
      return com.iamteer.Wcf.Verification.getDefaultInstance();
    }

    public static final int M_FIELD_NUMBER = 8;
    /**
     * <pre>
     * 群成员管理，添加、删除、邀请
     * </pre>
     *
     * <code>.wcf.MemberMgmt m = 8;</code>
     * @return Whether the m field is set.
     */
    @java.lang.Override
    public boolean hasM() {
      return msgCase_ == 8;
    }
    /**
     * <pre>
     * 群成员管理，添加、删除、邀请
     * </pre>
     *
     * <code>.wcf.MemberMgmt m = 8;</code>
     * @return The m.
     */
    @java.lang.Override
    public com.iamteer.Wcf.MemberMgmt getM() {
      if (msgCase_ == 8) {
         return (com.iamteer.Wcf.MemberMgmt) msg_;
      }
      return com.iamteer.Wcf.MemberMgmt.getDefaultInstance();
    }
    /**
     * <pre>
     * 群成员管理，添加、删除、邀请
     * </pre>
     *
     * <code>.wcf.MemberMgmt m = 8;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.MemberMgmtOrBuilder getMOrBuilder() {
      if (msgCase_ == 8) {
         return (com.iamteer.Wcf.MemberMgmt) msg_;
      }
      return com.iamteer.Wcf.MemberMgmt.getDefaultInstance();
    }

    public static final int XML_FIELD_NUMBER = 9;
    /**
     * <pre>
     * XML参数结构
     * </pre>
     *
     * <code>.wcf.XmlMsg xml = 9;</code>
     * @return Whether the xml field is set.
     */
    @java.lang.Override
    public boolean hasXml() {
      return msgCase_ == 9;
    }
    /**
     * <pre>
     * XML参数结构
     * </pre>
     *
     * <code>.wcf.XmlMsg xml = 9;</code>
     * @return The xml.
     */
    @java.lang.Override
    public com.iamteer.Wcf.XmlMsg getXml() {
      if (msgCase_ == 9) {
         return (com.iamteer.Wcf.XmlMsg) msg_;
      }
      return com.iamteer.Wcf.XmlMsg.getDefaultInstance();
    }
    /**
     * <pre>
     * XML参数结构
     * </pre>
     *
     * <code>.wcf.XmlMsg xml = 9;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.XmlMsgOrBuilder getXmlOrBuilder() {
      if (msgCase_ == 9) {
         return (com.iamteer.Wcf.XmlMsg) msg_;
      }
      return com.iamteer.Wcf.XmlMsg.getDefaultInstance();
    }

    public static final int DEC_FIELD_NUMBER = 10;
    /**
     * <pre>
     * 解密图片参数结构
     * </pre>
     *
     * <code>.wcf.DecPath dec = 10;</code>
     * @return Whether the dec field is set.
     */
    @java.lang.Override
    public boolean hasDec() {
      return msgCase_ == 10;
    }
    /**
     * <pre>
     * 解密图片参数结构
     * </pre>
     *
     * <code>.wcf.DecPath dec = 10;</code>
     * @return The dec.
     */
    @java.lang.Override
    public com.iamteer.Wcf.DecPath getDec() {
      if (msgCase_ == 10) {
         return (com.iamteer.Wcf.DecPath) msg_;
      }
      return com.iamteer.Wcf.DecPath.getDefaultInstance();
    }
    /**
     * <pre>
     * 解密图片参数结构
     * </pre>
     *
     * <code>.wcf.DecPath dec = 10;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DecPathOrBuilder getDecOrBuilder() {
      if (msgCase_ == 10) {
         return (com.iamteer.Wcf.DecPath) msg_;
      }
      return com.iamteer.Wcf.DecPath.getDefaultInstance();
    }

    public static final int TF_FIELD_NUMBER = 11;
    /**
     * <pre>
     * 接收转账参数结构
     * </pre>
     *
     * <code>.wcf.Transfer tf = 11;</code>
     * @return Whether the tf field is set.
     */
    @java.lang.Override
    public boolean hasTf() {
      return msgCase_ == 11;
    }
    /**
     * <pre>
     * 接收转账参数结构
     * </pre>
     *
     * <code>.wcf.Transfer tf = 11;</code>
     * @return The tf.
     */
    @java.lang.Override
    public com.iamteer.Wcf.Transfer getTf() {
      if (msgCase_ == 11) {
         return (com.iamteer.Wcf.Transfer) msg_;
      }
      return com.iamteer.Wcf.Transfer.getDefaultInstance();
    }
    /**
     * <pre>
     * 接收转账参数结构
     * </pre>
     *
     * <code>.wcf.Transfer tf = 11;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.TransferOrBuilder getTfOrBuilder() {
      if (msgCase_ == 11) {
         return (com.iamteer.Wcf.Transfer) msg_;
      }
      return com.iamteer.Wcf.Transfer.getDefaultInstance();
    }

    public static final int UI64_FIELD_NUMBER = 12;
    /**
     * <pre>
     * 64 位整数，通用
     * </pre>
     *
     * <code>uint64 ui64 = 12 [jstype = JS_STRING];</code>
     * @return Whether the ui64 field is set.
     */
    @java.lang.Override
    public boolean hasUi64() {
      return msgCase_ == 12;
    }
    /**
     * <pre>
     * 64 位整数，通用
     * </pre>
     *
     * <code>uint64 ui64 = 12 [jstype = JS_STRING];</code>
     * @return The ui64.
     */
    @java.lang.Override
    public long getUi64() {
      if (msgCase_ == 12) {
        return (java.lang.Long) msg_;
      }
      return 0L;
    }

    public static final int FLAG_FIELD_NUMBER = 13;
    /**
     * <pre>
     * 布尔值
     * </pre>
     *
     * <code>bool flag = 13;</code>
     * @return Whether the flag field is set.
     */
    @java.lang.Override
    public boolean hasFlag() {
      return msgCase_ == 13;
    }
    /**
     * <pre>
     * 布尔值
     * </pre>
     *
     * <code>bool flag = 13;</code>
     * @return The flag.
     */
    @java.lang.Override
    public boolean getFlag() {
      if (msgCase_ == 13) {
        return (java.lang.Boolean) msg_;
      }
      return false;
    }

    public static final int ATT_FIELD_NUMBER = 14;
    /**
     * <pre>
     * 下载图片、视频、文件参数结构
     * </pre>
     *
     * <code>.wcf.AttachMsg att = 14;</code>
     * @return Whether the att field is set.
     */
    @java.lang.Override
    public boolean hasAtt() {
      return msgCase_ == 14;
    }
    /**
     * <pre>
     * 下载图片、视频、文件参数结构
     * </pre>
     *
     * <code>.wcf.AttachMsg att = 14;</code>
     * @return The att.
     */
    @java.lang.Override
    public com.iamteer.Wcf.AttachMsg getAtt() {
      if (msgCase_ == 14) {
         return (com.iamteer.Wcf.AttachMsg) msg_;
      }
      return com.iamteer.Wcf.AttachMsg.getDefaultInstance();
    }
    /**
     * <pre>
     * 下载图片、视频、文件参数结构
     * </pre>
     *
     * <code>.wcf.AttachMsg att = 14;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.AttachMsgOrBuilder getAttOrBuilder() {
      if (msgCase_ == 14) {
         return (com.iamteer.Wcf.AttachMsg) msg_;
      }
      return com.iamteer.Wcf.AttachMsg.getDefaultInstance();
    }

    public static final int AM_FIELD_NUMBER = 15;
    /**
     * <pre>
     * 保存语音参数结构
     * </pre>
     *
     * <code>.wcf.AudioMsg am = 15;</code>
     * @return Whether the am field is set.
     */
    @java.lang.Override
    public boolean hasAm() {
      return msgCase_ == 15;
    }
    /**
     * <pre>
     * 保存语音参数结构
     * </pre>
     *
     * <code>.wcf.AudioMsg am = 15;</code>
     * @return The am.
     */
    @java.lang.Override
    public com.iamteer.Wcf.AudioMsg getAm() {
      if (msgCase_ == 15) {
         return (com.iamteer.Wcf.AudioMsg) msg_;
      }
      return com.iamteer.Wcf.AudioMsg.getDefaultInstance();
    }
    /**
     * <pre>
     * 保存语音参数结构
     * </pre>
     *
     * <code>.wcf.AudioMsg am = 15;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.AudioMsgOrBuilder getAmOrBuilder() {
      if (msgCase_ == 15) {
         return (com.iamteer.Wcf.AudioMsg) msg_;
      }
      return com.iamteer.Wcf.AudioMsg.getDefaultInstance();
    }

    public static final int RT_FIELD_NUMBER = 16;
    /**
     * <pre>
     * 发送卡片消息结构
     * </pre>
     *
     * <code>.wcf.RichText rt = 16;</code>
     * @return Whether the rt field is set.
     */
    @java.lang.Override
    public boolean hasRt() {
      return msgCase_ == 16;
    }
    /**
     * <pre>
     * 发送卡片消息结构
     * </pre>
     *
     * <code>.wcf.RichText rt = 16;</code>
     * @return The rt.
     */
    @java.lang.Override
    public com.iamteer.Wcf.RichText getRt() {
      if (msgCase_ == 16) {
         return (com.iamteer.Wcf.RichText) msg_;
      }
      return com.iamteer.Wcf.RichText.getDefaultInstance();
    }
    /**
     * <pre>
     * 发送卡片消息结构
     * </pre>
     *
     * <code>.wcf.RichText rt = 16;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.RichTextOrBuilder getRtOrBuilder() {
      if (msgCase_ == 16) {
         return (com.iamteer.Wcf.RichText) msg_;
      }
      return com.iamteer.Wcf.RichText.getDefaultInstance();
    }

    public static final int PM_FIELD_NUMBER = 17;
    /**
     * <pre>
     * 发送拍一拍参数结构
     * </pre>
     *
     * <code>.wcf.PatMsg pm = 17;</code>
     * @return Whether the pm field is set.
     */
    @java.lang.Override
    public boolean hasPm() {
      return msgCase_ == 17;
    }
    /**
     * <pre>
     * 发送拍一拍参数结构
     * </pre>
     *
     * <code>.wcf.PatMsg pm = 17;</code>
     * @return The pm.
     */
    @java.lang.Override
    public com.iamteer.Wcf.PatMsg getPm() {
      if (msgCase_ == 17) {
         return (com.iamteer.Wcf.PatMsg) msg_;
      }
      return com.iamteer.Wcf.PatMsg.getDefaultInstance();
    }
    /**
     * <pre>
     * 发送拍一拍参数结构
     * </pre>
     *
     * <code>.wcf.PatMsg pm = 17;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.PatMsgOrBuilder getPmOrBuilder() {
      if (msgCase_ == 17) {
         return (com.iamteer.Wcf.PatMsg) msg_;
      }
      return com.iamteer.Wcf.PatMsg.getDefaultInstance();
    }

    public static final int FM_FIELD_NUMBER = 18;
    /**
     * <pre>
     * 转发消息参数结构
     * </pre>
     *
     * <code>.wcf.ForwardMsg fm = 18;</code>
     * @return Whether the fm field is set.
     */
    @java.lang.Override
    public boolean hasFm() {
      return msgCase_ == 18;
    }
    /**
     * <pre>
     * 转发消息参数结构
     * </pre>
     *
     * <code>.wcf.ForwardMsg fm = 18;</code>
     * @return The fm.
     */
    @java.lang.Override
    public com.iamteer.Wcf.ForwardMsg getFm() {
      if (msgCase_ == 18) {
         return (com.iamteer.Wcf.ForwardMsg) msg_;
      }
      return com.iamteer.Wcf.ForwardMsg.getDefaultInstance();
    }
    /**
     * <pre>
     * 转发消息参数结构
     * </pre>
     *
     * <code>.wcf.ForwardMsg fm = 18;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.ForwardMsgOrBuilder getFmOrBuilder() {
      if (msgCase_ == 18) {
         return (com.iamteer.Wcf.ForwardMsg) msg_;
      }
      return com.iamteer.Wcf.ForwardMsg.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (func_ != com.iamteer.Wcf.Functions.FUNC_RESERVED.getNumber()) {
        output.writeEnum(1, func_);
      }
      if (msgCase_ == 2) {
        output.writeMessage(2, (com.iamteer.Wcf.Empty) msg_);
      }
      if (msgCase_ == 3) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, msg_);
      }
      if (msgCase_ == 4) {
        output.writeMessage(4, (com.iamteer.Wcf.TextMsg) msg_);
      }
      if (msgCase_ == 5) {
        output.writeMessage(5, (com.iamteer.Wcf.PathMsg) msg_);
      }
      if (msgCase_ == 6) {
        output.writeMessage(6, (com.iamteer.Wcf.DbQuery) msg_);
      }
      if (msgCase_ == 7) {
        output.writeMessage(7, (com.iamteer.Wcf.Verification) msg_);
      }
      if (msgCase_ == 8) {
        output.writeMessage(8, (com.iamteer.Wcf.MemberMgmt) msg_);
      }
      if (msgCase_ == 9) {
        output.writeMessage(9, (com.iamteer.Wcf.XmlMsg) msg_);
      }
      if (msgCase_ == 10) {
        output.writeMessage(10, (com.iamteer.Wcf.DecPath) msg_);
      }
      if (msgCase_ == 11) {
        output.writeMessage(11, (com.iamteer.Wcf.Transfer) msg_);
      }
      if (msgCase_ == 12) {
        output.writeUInt64(
            12, (long)((java.lang.Long) msg_));
      }
      if (msgCase_ == 13) {
        output.writeBool(
            13, (boolean)((java.lang.Boolean) msg_));
      }
      if (msgCase_ == 14) {
        output.writeMessage(14, (com.iamteer.Wcf.AttachMsg) msg_);
      }
      if (msgCase_ == 15) {
        output.writeMessage(15, (com.iamteer.Wcf.AudioMsg) msg_);
      }
      if (msgCase_ == 16) {
        output.writeMessage(16, (com.iamteer.Wcf.RichText) msg_);
      }
      if (msgCase_ == 17) {
        output.writeMessage(17, (com.iamteer.Wcf.PatMsg) msg_);
      }
      if (msgCase_ == 18) {
        output.writeMessage(18, (com.iamteer.Wcf.ForwardMsg) msg_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (func_ != com.iamteer.Wcf.Functions.FUNC_RESERVED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, func_);
      }
      if (msgCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (com.iamteer.Wcf.Empty) msg_);
      }
      if (msgCase_ == 3) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, msg_);
      }
      if (msgCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (com.iamteer.Wcf.TextMsg) msg_);
      }
      if (msgCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (com.iamteer.Wcf.PathMsg) msg_);
      }
      if (msgCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (com.iamteer.Wcf.DbQuery) msg_);
      }
      if (msgCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (com.iamteer.Wcf.Verification) msg_);
      }
      if (msgCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (com.iamteer.Wcf.MemberMgmt) msg_);
      }
      if (msgCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, (com.iamteer.Wcf.XmlMsg) msg_);
      }
      if (msgCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (com.iamteer.Wcf.DecPath) msg_);
      }
      if (msgCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (com.iamteer.Wcf.Transfer) msg_);
      }
      if (msgCase_ == 12) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(
              12, (long)((java.lang.Long) msg_));
      }
      if (msgCase_ == 13) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(
              13, (boolean)((java.lang.Boolean) msg_));
      }
      if (msgCase_ == 14) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, (com.iamteer.Wcf.AttachMsg) msg_);
      }
      if (msgCase_ == 15) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, (com.iamteer.Wcf.AudioMsg) msg_);
      }
      if (msgCase_ == 16) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, (com.iamteer.Wcf.RichText) msg_);
      }
      if (msgCase_ == 17) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, (com.iamteer.Wcf.PatMsg) msg_);
      }
      if (msgCase_ == 18) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, (com.iamteer.Wcf.ForwardMsg) msg_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.Request)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.Request other = (com.iamteer.Wcf.Request) obj;

      if (func_ != other.func_) return false;
      if (!getMsgCase().equals(other.getMsgCase())) return false;
      switch (msgCase_) {
        case 2:
          if (!getEmpty()
              .equals(other.getEmpty())) return false;
          break;
        case 3:
          if (!getStr()
              .equals(other.getStr())) return false;
          break;
        case 4:
          if (!getTxt()
              .equals(other.getTxt())) return false;
          break;
        case 5:
          if (!getFile()
              .equals(other.getFile())) return false;
          break;
        case 6:
          if (!getQuery()
              .equals(other.getQuery())) return false;
          break;
        case 7:
          if (!getV()
              .equals(other.getV())) return false;
          break;
        case 8:
          if (!getM()
              .equals(other.getM())) return false;
          break;
        case 9:
          if (!getXml()
              .equals(other.getXml())) return false;
          break;
        case 10:
          if (!getDec()
              .equals(other.getDec())) return false;
          break;
        case 11:
          if (!getTf()
              .equals(other.getTf())) return false;
          break;
        case 12:
          if (getUi64()
              != other.getUi64()) return false;
          break;
        case 13:
          if (getFlag()
              != other.getFlag()) return false;
          break;
        case 14:
          if (!getAtt()
              .equals(other.getAtt())) return false;
          break;
        case 15:
          if (!getAm()
              .equals(other.getAm())) return false;
          break;
        case 16:
          if (!getRt()
              .equals(other.getRt())) return false;
          break;
        case 17:
          if (!getPm()
              .equals(other.getPm())) return false;
          break;
        case 18:
          if (!getFm()
              .equals(other.getFm())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + FUNC_FIELD_NUMBER;
      hash = (53 * hash) + func_;
      switch (msgCase_) {
        case 2:
          hash = (37 * hash) + EMPTY_FIELD_NUMBER;
          hash = (53 * hash) + getEmpty().hashCode();
          break;
        case 3:
          hash = (37 * hash) + STR_FIELD_NUMBER;
          hash = (53 * hash) + getStr().hashCode();
          break;
        case 4:
          hash = (37 * hash) + TXT_FIELD_NUMBER;
          hash = (53 * hash) + getTxt().hashCode();
          break;
        case 5:
          hash = (37 * hash) + FILE_FIELD_NUMBER;
          hash = (53 * hash) + getFile().hashCode();
          break;
        case 6:
          hash = (37 * hash) + QUERY_FIELD_NUMBER;
          hash = (53 * hash) + getQuery().hashCode();
          break;
        case 7:
          hash = (37 * hash) + V_FIELD_NUMBER;
          hash = (53 * hash) + getV().hashCode();
          break;
        case 8:
          hash = (37 * hash) + M_FIELD_NUMBER;
          hash = (53 * hash) + getM().hashCode();
          break;
        case 9:
          hash = (37 * hash) + XML_FIELD_NUMBER;
          hash = (53 * hash) + getXml().hashCode();
          break;
        case 10:
          hash = (37 * hash) + DEC_FIELD_NUMBER;
          hash = (53 * hash) + getDec().hashCode();
          break;
        case 11:
          hash = (37 * hash) + TF_FIELD_NUMBER;
          hash = (53 * hash) + getTf().hashCode();
          break;
        case 12:
          hash = (37 * hash) + UI64_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getUi64());
          break;
        case 13:
          hash = (37 * hash) + FLAG_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getFlag());
          break;
        case 14:
          hash = (37 * hash) + ATT_FIELD_NUMBER;
          hash = (53 * hash) + getAtt().hashCode();
          break;
        case 15:
          hash = (37 * hash) + AM_FIELD_NUMBER;
          hash = (53 * hash) + getAm().hashCode();
          break;
        case 16:
          hash = (37 * hash) + RT_FIELD_NUMBER;
          hash = (53 * hash) + getRt().hashCode();
          break;
        case 17:
          hash = (37 * hash) + PM_FIELD_NUMBER;
          hash = (53 * hash) + getPm().hashCode();
          break;
        case 18:
          hash = (37 * hash) + FM_FIELD_NUMBER;
          hash = (53 * hash) + getFm().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.Request prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.Request}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.Request)
        com.iamteer.Wcf.RequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_Request_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_Request_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.Request.class, com.iamteer.Wcf.Request.Builder.class);
      }

      // Construct using com.iamteer.Wcf.Request.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        msgCase_ = 0;
        msg_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_Request_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Request getDefaultInstanceForType() {
        return com.iamteer.Wcf.Request.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.Request build() {
        com.iamteer.Wcf.Request result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Request buildPartial() {
        com.iamteer.Wcf.Request result = new com.iamteer.Wcf.Request(this);
        result.func_ = func_;
        if (msgCase_ == 2) {
          if (emptyBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = emptyBuilder_.build();
          }
        }
        if (msgCase_ == 3) {
          result.msg_ = msg_;
        }
        if (msgCase_ == 4) {
          if (txtBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = txtBuilder_.build();
          }
        }
        if (msgCase_ == 5) {
          if (fileBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = fileBuilder_.build();
          }
        }
        if (msgCase_ == 6) {
          if (queryBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = queryBuilder_.build();
          }
        }
        if (msgCase_ == 7) {
          if (vBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = vBuilder_.build();
          }
        }
        if (msgCase_ == 8) {
          if (mBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = mBuilder_.build();
          }
        }
        if (msgCase_ == 9) {
          if (xmlBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = xmlBuilder_.build();
          }
        }
        if (msgCase_ == 10) {
          if (decBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = decBuilder_.build();
          }
        }
        if (msgCase_ == 11) {
          if (tfBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = tfBuilder_.build();
          }
        }
        if (msgCase_ == 12) {
          result.msg_ = msg_;
        }
        if (msgCase_ == 13) {
          result.msg_ = msg_;
        }
        if (msgCase_ == 14) {
          if (attBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = attBuilder_.build();
          }
        }
        if (msgCase_ == 15) {
          if (amBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = amBuilder_.build();
          }
        }
        if (msgCase_ == 16) {
          if (rtBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = rtBuilder_.build();
          }
        }
        if (msgCase_ == 17) {
          if (pmBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = pmBuilder_.build();
          }
        }
        if (msgCase_ == 18) {
          if (fmBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = fmBuilder_.build();
          }
        }
        result.msgCase_ = msgCase_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.Request other) {
        if (other == com.iamteer.Wcf.Request.getDefaultInstance()) return this;
        if (other.func_ != 0) {
          setFuncValue(other.getFuncValue());
        }
        switch (other.getMsgCase()) {
          case EMPTY: {
            mergeEmpty(other.getEmpty());
            break;
          }
          case STR: {
            msgCase_ = 3;
            msg_ = other.msg_;
            onChanged();
            break;
          }
          case TXT: {
            mergeTxt(other.getTxt());
            break;
          }
          case FILE: {
            mergeFile(other.getFile());
            break;
          }
          case QUERY: {
            mergeQuery(other.getQuery());
            break;
          }
          case V: {
            mergeV(other.getV());
            break;
          }
          case M: {
            mergeM(other.getM());
            break;
          }
          case XML: {
            mergeXml(other.getXml());
            break;
          }
          case DEC: {
            mergeDec(other.getDec());
            break;
          }
          case TF: {
            mergeTf(other.getTf());
            break;
          }
          case UI64: {
            setUi64(other.getUi64());
            break;
          }
          case FLAG: {
            setFlag(other.getFlag());
            break;
          }
          case ATT: {
            mergeAtt(other.getAtt());
            break;
          }
          case AM: {
            mergeAm(other.getAm());
            break;
          }
          case RT: {
            mergeRt(other.getRt());
            break;
          }
          case PM: {
            mergePm(other.getPm());
            break;
          }
          case FM: {
            mergeFm(other.getFm());
            break;
          }
          case MSG_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.Request parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.Request) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int msgCase_ = 0;
      private java.lang.Object msg_;
      public MsgCase
          getMsgCase() {
        return MsgCase.forNumber(
            msgCase_);
      }

      public Builder clearMsg() {
        msgCase_ = 0;
        msg_ = null;
        onChanged();
        return this;
      }


      private int func_ = 0;
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @return The enum numeric value on the wire for func.
       */
      @java.lang.Override public int getFuncValue() {
        return func_;
      }
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @param value The enum numeric value on the wire for func to set.
       * @return This builder for chaining.
       */
      public Builder setFuncValue(int value) {
        
        func_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @return The func.
       */
      @java.lang.Override
      public com.iamteer.Wcf.Functions getFunc() {
        @SuppressWarnings("deprecation")
        com.iamteer.Wcf.Functions result = com.iamteer.Wcf.Functions.valueOf(func_);
        return result == null ? com.iamteer.Wcf.Functions.UNRECOGNIZED : result;
      }
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @param value The func to set.
       * @return This builder for chaining.
       */
      public Builder setFunc(com.iamteer.Wcf.Functions value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        func_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFunc() {
        
        func_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.Empty, com.iamteer.Wcf.Empty.Builder, com.iamteer.Wcf.EmptyOrBuilder> emptyBuilder_;
      /**
       * <pre>
       * 无参数
       * </pre>
       *
       * <code>.wcf.Empty empty = 2;</code>
       * @return Whether the empty field is set.
       */
      @java.lang.Override
      public boolean hasEmpty() {
        return msgCase_ == 2;
      }
      /**
       * <pre>
       * 无参数
       * </pre>
       *
       * <code>.wcf.Empty empty = 2;</code>
       * @return The empty.
       */
      @java.lang.Override
      public com.iamteer.Wcf.Empty getEmpty() {
        if (emptyBuilder_ == null) {
          if (msgCase_ == 2) {
            return (com.iamteer.Wcf.Empty) msg_;
          }
          return com.iamteer.Wcf.Empty.getDefaultInstance();
        } else {
          if (msgCase_ == 2) {
            return emptyBuilder_.getMessage();
          }
          return com.iamteer.Wcf.Empty.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 无参数
       * </pre>
       *
       * <code>.wcf.Empty empty = 2;</code>
       */
      public Builder setEmpty(com.iamteer.Wcf.Empty value) {
        if (emptyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          emptyBuilder_.setMessage(value);
        }
        msgCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * 无参数
       * </pre>
       *
       * <code>.wcf.Empty empty = 2;</code>
       */
      public Builder setEmpty(
          com.iamteer.Wcf.Empty.Builder builderForValue) {
        if (emptyBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          emptyBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * 无参数
       * </pre>
       *
       * <code>.wcf.Empty empty = 2;</code>
       */
      public Builder mergeEmpty(com.iamteer.Wcf.Empty value) {
        if (emptyBuilder_ == null) {
          if (msgCase_ == 2 &&
              msg_ != com.iamteer.Wcf.Empty.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.Empty.newBuilder((com.iamteer.Wcf.Empty) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 2) {
            emptyBuilder_.mergeFrom(value);
          }
          emptyBuilder_.setMessage(value);
        }
        msgCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * 无参数
       * </pre>
       *
       * <code>.wcf.Empty empty = 2;</code>
       */
      public Builder clearEmpty() {
        if (emptyBuilder_ == null) {
          if (msgCase_ == 2) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 2) {
            msgCase_ = 0;
            msg_ = null;
          }
          emptyBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 无参数
       * </pre>
       *
       * <code>.wcf.Empty empty = 2;</code>
       */
      public com.iamteer.Wcf.Empty.Builder getEmptyBuilder() {
        return getEmptyFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 无参数
       * </pre>
       *
       * <code>.wcf.Empty empty = 2;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.EmptyOrBuilder getEmptyOrBuilder() {
        if ((msgCase_ == 2) && (emptyBuilder_ != null)) {
          return emptyBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 2) {
            return (com.iamteer.Wcf.Empty) msg_;
          }
          return com.iamteer.Wcf.Empty.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 无参数
       * </pre>
       *
       * <code>.wcf.Empty empty = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.Empty, com.iamteer.Wcf.Empty.Builder, com.iamteer.Wcf.EmptyOrBuilder> 
          getEmptyFieldBuilder() {
        if (emptyBuilder_ == null) {
          if (!(msgCase_ == 2)) {
            msg_ = com.iamteer.Wcf.Empty.getDefaultInstance();
          }
          emptyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.Empty, com.iamteer.Wcf.Empty.Builder, com.iamteer.Wcf.EmptyOrBuilder>(
                  (com.iamteer.Wcf.Empty) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 2;
        onChanged();;
        return emptyBuilder_;
      }

      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @return Whether the str field is set.
       */
      @java.lang.Override
      public boolean hasStr() {
        return msgCase_ == 3;
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @return The str.
       */
      @java.lang.Override
      public java.lang.String getStr() {
        java.lang.Object ref = "";
        if (msgCase_ == 3) {
          ref = msg_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (msgCase_ == 3) {
            msg_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @return The bytes for str.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getStrBytes() {
        java.lang.Object ref = "";
        if (msgCase_ == 3) {
          ref = msg_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (msgCase_ == 3) {
            msg_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @param value The str to set.
       * @return This builder for chaining.
       */
      public Builder setStr(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  msgCase_ = 3;
        msg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStr() {
        if (msgCase_ == 3) {
          msgCase_ = 0;
          msg_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @param value The bytes for str to set.
       * @return This builder for chaining.
       */
      public Builder setStrBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        msgCase_ = 3;
        msg_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.TextMsg, com.iamteer.Wcf.TextMsg.Builder, com.iamteer.Wcf.TextMsgOrBuilder> txtBuilder_;
      /**
       * <pre>
       * 发送文本消息结构
       * </pre>
       *
       * <code>.wcf.TextMsg txt = 4;</code>
       * @return Whether the txt field is set.
       */
      @java.lang.Override
      public boolean hasTxt() {
        return msgCase_ == 4;
      }
      /**
       * <pre>
       * 发送文本消息结构
       * </pre>
       *
       * <code>.wcf.TextMsg txt = 4;</code>
       * @return The txt.
       */
      @java.lang.Override
      public com.iamteer.Wcf.TextMsg getTxt() {
        if (txtBuilder_ == null) {
          if (msgCase_ == 4) {
            return (com.iamteer.Wcf.TextMsg) msg_;
          }
          return com.iamteer.Wcf.TextMsg.getDefaultInstance();
        } else {
          if (msgCase_ == 4) {
            return txtBuilder_.getMessage();
          }
          return com.iamteer.Wcf.TextMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 发送文本消息结构
       * </pre>
       *
       * <code>.wcf.TextMsg txt = 4;</code>
       */
      public Builder setTxt(com.iamteer.Wcf.TextMsg value) {
        if (txtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          txtBuilder_.setMessage(value);
        }
        msgCase_ = 4;
        return this;
      }
      /**
       * <pre>
       * 发送文本消息结构
       * </pre>
       *
       * <code>.wcf.TextMsg txt = 4;</code>
       */
      public Builder setTxt(
          com.iamteer.Wcf.TextMsg.Builder builderForValue) {
        if (txtBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          txtBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 4;
        return this;
      }
      /**
       * <pre>
       * 发送文本消息结构
       * </pre>
       *
       * <code>.wcf.TextMsg txt = 4;</code>
       */
      public Builder mergeTxt(com.iamteer.Wcf.TextMsg value) {
        if (txtBuilder_ == null) {
          if (msgCase_ == 4 &&
              msg_ != com.iamteer.Wcf.TextMsg.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.TextMsg.newBuilder((com.iamteer.Wcf.TextMsg) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 4) {
            txtBuilder_.mergeFrom(value);
          }
          txtBuilder_.setMessage(value);
        }
        msgCase_ = 4;
        return this;
      }
      /**
       * <pre>
       * 发送文本消息结构
       * </pre>
       *
       * <code>.wcf.TextMsg txt = 4;</code>
       */
      public Builder clearTxt() {
        if (txtBuilder_ == null) {
          if (msgCase_ == 4) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 4) {
            msgCase_ = 0;
            msg_ = null;
          }
          txtBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 发送文本消息结构
       * </pre>
       *
       * <code>.wcf.TextMsg txt = 4;</code>
       */
      public com.iamteer.Wcf.TextMsg.Builder getTxtBuilder() {
        return getTxtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 发送文本消息结构
       * </pre>
       *
       * <code>.wcf.TextMsg txt = 4;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.TextMsgOrBuilder getTxtOrBuilder() {
        if ((msgCase_ == 4) && (txtBuilder_ != null)) {
          return txtBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 4) {
            return (com.iamteer.Wcf.TextMsg) msg_;
          }
          return com.iamteer.Wcf.TextMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 发送文本消息结构
       * </pre>
       *
       * <code>.wcf.TextMsg txt = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.TextMsg, com.iamteer.Wcf.TextMsg.Builder, com.iamteer.Wcf.TextMsgOrBuilder> 
          getTxtFieldBuilder() {
        if (txtBuilder_ == null) {
          if (!(msgCase_ == 4)) {
            msg_ = com.iamteer.Wcf.TextMsg.getDefaultInstance();
          }
          txtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.TextMsg, com.iamteer.Wcf.TextMsg.Builder, com.iamteer.Wcf.TextMsgOrBuilder>(
                  (com.iamteer.Wcf.TextMsg) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 4;
        onChanged();;
        return txtBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.PathMsg, com.iamteer.Wcf.PathMsg.Builder, com.iamteer.Wcf.PathMsgOrBuilder> fileBuilder_;
      /**
       * <pre>
       * 发送图片、文件消息结构
       * </pre>
       *
       * <code>.wcf.PathMsg file = 5;</code>
       * @return Whether the file field is set.
       */
      @java.lang.Override
      public boolean hasFile() {
        return msgCase_ == 5;
      }
      /**
       * <pre>
       * 发送图片、文件消息结构
       * </pre>
       *
       * <code>.wcf.PathMsg file = 5;</code>
       * @return The file.
       */
      @java.lang.Override
      public com.iamteer.Wcf.PathMsg getFile() {
        if (fileBuilder_ == null) {
          if (msgCase_ == 5) {
            return (com.iamteer.Wcf.PathMsg) msg_;
          }
          return com.iamteer.Wcf.PathMsg.getDefaultInstance();
        } else {
          if (msgCase_ == 5) {
            return fileBuilder_.getMessage();
          }
          return com.iamteer.Wcf.PathMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 发送图片、文件消息结构
       * </pre>
       *
       * <code>.wcf.PathMsg file = 5;</code>
       */
      public Builder setFile(com.iamteer.Wcf.PathMsg value) {
        if (fileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          fileBuilder_.setMessage(value);
        }
        msgCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * 发送图片、文件消息结构
       * </pre>
       *
       * <code>.wcf.PathMsg file = 5;</code>
       */
      public Builder setFile(
          com.iamteer.Wcf.PathMsg.Builder builderForValue) {
        if (fileBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          fileBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * 发送图片、文件消息结构
       * </pre>
       *
       * <code>.wcf.PathMsg file = 5;</code>
       */
      public Builder mergeFile(com.iamteer.Wcf.PathMsg value) {
        if (fileBuilder_ == null) {
          if (msgCase_ == 5 &&
              msg_ != com.iamteer.Wcf.PathMsg.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.PathMsg.newBuilder((com.iamteer.Wcf.PathMsg) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 5) {
            fileBuilder_.mergeFrom(value);
          }
          fileBuilder_.setMessage(value);
        }
        msgCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * 发送图片、文件消息结构
       * </pre>
       *
       * <code>.wcf.PathMsg file = 5;</code>
       */
      public Builder clearFile() {
        if (fileBuilder_ == null) {
          if (msgCase_ == 5) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 5) {
            msgCase_ = 0;
            msg_ = null;
          }
          fileBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 发送图片、文件消息结构
       * </pre>
       *
       * <code>.wcf.PathMsg file = 5;</code>
       */
      public com.iamteer.Wcf.PathMsg.Builder getFileBuilder() {
        return getFileFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 发送图片、文件消息结构
       * </pre>
       *
       * <code>.wcf.PathMsg file = 5;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.PathMsgOrBuilder getFileOrBuilder() {
        if ((msgCase_ == 5) && (fileBuilder_ != null)) {
          return fileBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 5) {
            return (com.iamteer.Wcf.PathMsg) msg_;
          }
          return com.iamteer.Wcf.PathMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 发送图片、文件消息结构
       * </pre>
       *
       * <code>.wcf.PathMsg file = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.PathMsg, com.iamteer.Wcf.PathMsg.Builder, com.iamteer.Wcf.PathMsgOrBuilder> 
          getFileFieldBuilder() {
        if (fileBuilder_ == null) {
          if (!(msgCase_ == 5)) {
            msg_ = com.iamteer.Wcf.PathMsg.getDefaultInstance();
          }
          fileBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.PathMsg, com.iamteer.Wcf.PathMsg.Builder, com.iamteer.Wcf.PathMsgOrBuilder>(
                  (com.iamteer.Wcf.PathMsg) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 5;
        onChanged();;
        return fileBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DbQuery, com.iamteer.Wcf.DbQuery.Builder, com.iamteer.Wcf.DbQueryOrBuilder> queryBuilder_;
      /**
       * <pre>
       * 数据库查询参数结构
       * </pre>
       *
       * <code>.wcf.DbQuery query = 6;</code>
       * @return Whether the query field is set.
       */
      @java.lang.Override
      public boolean hasQuery() {
        return msgCase_ == 6;
      }
      /**
       * <pre>
       * 数据库查询参数结构
       * </pre>
       *
       * <code>.wcf.DbQuery query = 6;</code>
       * @return The query.
       */
      @java.lang.Override
      public com.iamteer.Wcf.DbQuery getQuery() {
        if (queryBuilder_ == null) {
          if (msgCase_ == 6) {
            return (com.iamteer.Wcf.DbQuery) msg_;
          }
          return com.iamteer.Wcf.DbQuery.getDefaultInstance();
        } else {
          if (msgCase_ == 6) {
            return queryBuilder_.getMessage();
          }
          return com.iamteer.Wcf.DbQuery.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 数据库查询参数结构
       * </pre>
       *
       * <code>.wcf.DbQuery query = 6;</code>
       */
      public Builder setQuery(com.iamteer.Wcf.DbQuery value) {
        if (queryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          queryBuilder_.setMessage(value);
        }
        msgCase_ = 6;
        return this;
      }
      /**
       * <pre>
       * 数据库查询参数结构
       * </pre>
       *
       * <code>.wcf.DbQuery query = 6;</code>
       */
      public Builder setQuery(
          com.iamteer.Wcf.DbQuery.Builder builderForValue) {
        if (queryBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          queryBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 6;
        return this;
      }
      /**
       * <pre>
       * 数据库查询参数结构
       * </pre>
       *
       * <code>.wcf.DbQuery query = 6;</code>
       */
      public Builder mergeQuery(com.iamteer.Wcf.DbQuery value) {
        if (queryBuilder_ == null) {
          if (msgCase_ == 6 &&
              msg_ != com.iamteer.Wcf.DbQuery.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.DbQuery.newBuilder((com.iamteer.Wcf.DbQuery) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 6) {
            queryBuilder_.mergeFrom(value);
          }
          queryBuilder_.setMessage(value);
        }
        msgCase_ = 6;
        return this;
      }
      /**
       * <pre>
       * 数据库查询参数结构
       * </pre>
       *
       * <code>.wcf.DbQuery query = 6;</code>
       */
      public Builder clearQuery() {
        if (queryBuilder_ == null) {
          if (msgCase_ == 6) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 6) {
            msgCase_ = 0;
            msg_ = null;
          }
          queryBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 数据库查询参数结构
       * </pre>
       *
       * <code>.wcf.DbQuery query = 6;</code>
       */
      public com.iamteer.Wcf.DbQuery.Builder getQueryBuilder() {
        return getQueryFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 数据库查询参数结构
       * </pre>
       *
       * <code>.wcf.DbQuery query = 6;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.DbQueryOrBuilder getQueryOrBuilder() {
        if ((msgCase_ == 6) && (queryBuilder_ != null)) {
          return queryBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 6) {
            return (com.iamteer.Wcf.DbQuery) msg_;
          }
          return com.iamteer.Wcf.DbQuery.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 数据库查询参数结构
       * </pre>
       *
       * <code>.wcf.DbQuery query = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DbQuery, com.iamteer.Wcf.DbQuery.Builder, com.iamteer.Wcf.DbQueryOrBuilder> 
          getQueryFieldBuilder() {
        if (queryBuilder_ == null) {
          if (!(msgCase_ == 6)) {
            msg_ = com.iamteer.Wcf.DbQuery.getDefaultInstance();
          }
          queryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.DbQuery, com.iamteer.Wcf.DbQuery.Builder, com.iamteer.Wcf.DbQueryOrBuilder>(
                  (com.iamteer.Wcf.DbQuery) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 6;
        onChanged();;
        return queryBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.Verification, com.iamteer.Wcf.Verification.Builder, com.iamteer.Wcf.VerificationOrBuilder> vBuilder_;
      /**
       * <pre>
       * 通过好友验证参数结构
       * </pre>
       *
       * <code>.wcf.Verification v = 7;</code>
       * @return Whether the v field is set.
       */
      @java.lang.Override
      public boolean hasV() {
        return msgCase_ == 7;
      }
      /**
       * <pre>
       * 通过好友验证参数结构
       * </pre>
       *
       * <code>.wcf.Verification v = 7;</code>
       * @return The v.
       */
      @java.lang.Override
      public com.iamteer.Wcf.Verification getV() {
        if (vBuilder_ == null) {
          if (msgCase_ == 7) {
            return (com.iamteer.Wcf.Verification) msg_;
          }
          return com.iamteer.Wcf.Verification.getDefaultInstance();
        } else {
          if (msgCase_ == 7) {
            return vBuilder_.getMessage();
          }
          return com.iamteer.Wcf.Verification.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 通过好友验证参数结构
       * </pre>
       *
       * <code>.wcf.Verification v = 7;</code>
       */
      public Builder setV(com.iamteer.Wcf.Verification value) {
        if (vBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          vBuilder_.setMessage(value);
        }
        msgCase_ = 7;
        return this;
      }
      /**
       * <pre>
       * 通过好友验证参数结构
       * </pre>
       *
       * <code>.wcf.Verification v = 7;</code>
       */
      public Builder setV(
          com.iamteer.Wcf.Verification.Builder builderForValue) {
        if (vBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          vBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 7;
        return this;
      }
      /**
       * <pre>
       * 通过好友验证参数结构
       * </pre>
       *
       * <code>.wcf.Verification v = 7;</code>
       */
      public Builder mergeV(com.iamteer.Wcf.Verification value) {
        if (vBuilder_ == null) {
          if (msgCase_ == 7 &&
              msg_ != com.iamteer.Wcf.Verification.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.Verification.newBuilder((com.iamteer.Wcf.Verification) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 7) {
            vBuilder_.mergeFrom(value);
          }
          vBuilder_.setMessage(value);
        }
        msgCase_ = 7;
        return this;
      }
      /**
       * <pre>
       * 通过好友验证参数结构
       * </pre>
       *
       * <code>.wcf.Verification v = 7;</code>
       */
      public Builder clearV() {
        if (vBuilder_ == null) {
          if (msgCase_ == 7) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 7) {
            msgCase_ = 0;
            msg_ = null;
          }
          vBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 通过好友验证参数结构
       * </pre>
       *
       * <code>.wcf.Verification v = 7;</code>
       */
      public com.iamteer.Wcf.Verification.Builder getVBuilder() {
        return getVFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 通过好友验证参数结构
       * </pre>
       *
       * <code>.wcf.Verification v = 7;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.VerificationOrBuilder getVOrBuilder() {
        if ((msgCase_ == 7) && (vBuilder_ != null)) {
          return vBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 7) {
            return (com.iamteer.Wcf.Verification) msg_;
          }
          return com.iamteer.Wcf.Verification.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 通过好友验证参数结构
       * </pre>
       *
       * <code>.wcf.Verification v = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.Verification, com.iamteer.Wcf.Verification.Builder, com.iamteer.Wcf.VerificationOrBuilder> 
          getVFieldBuilder() {
        if (vBuilder_ == null) {
          if (!(msgCase_ == 7)) {
            msg_ = com.iamteer.Wcf.Verification.getDefaultInstance();
          }
          vBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.Verification, com.iamteer.Wcf.Verification.Builder, com.iamteer.Wcf.VerificationOrBuilder>(
                  (com.iamteer.Wcf.Verification) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 7;
        onChanged();;
        return vBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.MemberMgmt, com.iamteer.Wcf.MemberMgmt.Builder, com.iamteer.Wcf.MemberMgmtOrBuilder> mBuilder_;
      /**
       * <pre>
       * 群成员管理，添加、删除、邀请
       * </pre>
       *
       * <code>.wcf.MemberMgmt m = 8;</code>
       * @return Whether the m field is set.
       */
      @java.lang.Override
      public boolean hasM() {
        return msgCase_ == 8;
      }
      /**
       * <pre>
       * 群成员管理，添加、删除、邀请
       * </pre>
       *
       * <code>.wcf.MemberMgmt m = 8;</code>
       * @return The m.
       */
      @java.lang.Override
      public com.iamteer.Wcf.MemberMgmt getM() {
        if (mBuilder_ == null) {
          if (msgCase_ == 8) {
            return (com.iamteer.Wcf.MemberMgmt) msg_;
          }
          return com.iamteer.Wcf.MemberMgmt.getDefaultInstance();
        } else {
          if (msgCase_ == 8) {
            return mBuilder_.getMessage();
          }
          return com.iamteer.Wcf.MemberMgmt.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 群成员管理，添加、删除、邀请
       * </pre>
       *
       * <code>.wcf.MemberMgmt m = 8;</code>
       */
      public Builder setM(com.iamteer.Wcf.MemberMgmt value) {
        if (mBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          mBuilder_.setMessage(value);
        }
        msgCase_ = 8;
        return this;
      }
      /**
       * <pre>
       * 群成员管理，添加、删除、邀请
       * </pre>
       *
       * <code>.wcf.MemberMgmt m = 8;</code>
       */
      public Builder setM(
          com.iamteer.Wcf.MemberMgmt.Builder builderForValue) {
        if (mBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          mBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 8;
        return this;
      }
      /**
       * <pre>
       * 群成员管理，添加、删除、邀请
       * </pre>
       *
       * <code>.wcf.MemberMgmt m = 8;</code>
       */
      public Builder mergeM(com.iamteer.Wcf.MemberMgmt value) {
        if (mBuilder_ == null) {
          if (msgCase_ == 8 &&
              msg_ != com.iamteer.Wcf.MemberMgmt.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.MemberMgmt.newBuilder((com.iamteer.Wcf.MemberMgmt) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 8) {
            mBuilder_.mergeFrom(value);
          }
          mBuilder_.setMessage(value);
        }
        msgCase_ = 8;
        return this;
      }
      /**
       * <pre>
       * 群成员管理，添加、删除、邀请
       * </pre>
       *
       * <code>.wcf.MemberMgmt m = 8;</code>
       */
      public Builder clearM() {
        if (mBuilder_ == null) {
          if (msgCase_ == 8) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 8) {
            msgCase_ = 0;
            msg_ = null;
          }
          mBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 群成员管理，添加、删除、邀请
       * </pre>
       *
       * <code>.wcf.MemberMgmt m = 8;</code>
       */
      public com.iamteer.Wcf.MemberMgmt.Builder getMBuilder() {
        return getMFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 群成员管理，添加、删除、邀请
       * </pre>
       *
       * <code>.wcf.MemberMgmt m = 8;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.MemberMgmtOrBuilder getMOrBuilder() {
        if ((msgCase_ == 8) && (mBuilder_ != null)) {
          return mBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 8) {
            return (com.iamteer.Wcf.MemberMgmt) msg_;
          }
          return com.iamteer.Wcf.MemberMgmt.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 群成员管理，添加、删除、邀请
       * </pre>
       *
       * <code>.wcf.MemberMgmt m = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.MemberMgmt, com.iamteer.Wcf.MemberMgmt.Builder, com.iamteer.Wcf.MemberMgmtOrBuilder> 
          getMFieldBuilder() {
        if (mBuilder_ == null) {
          if (!(msgCase_ == 8)) {
            msg_ = com.iamteer.Wcf.MemberMgmt.getDefaultInstance();
          }
          mBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.MemberMgmt, com.iamteer.Wcf.MemberMgmt.Builder, com.iamteer.Wcf.MemberMgmtOrBuilder>(
                  (com.iamteer.Wcf.MemberMgmt) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 8;
        onChanged();;
        return mBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.XmlMsg, com.iamteer.Wcf.XmlMsg.Builder, com.iamteer.Wcf.XmlMsgOrBuilder> xmlBuilder_;
      /**
       * <pre>
       * XML参数结构
       * </pre>
       *
       * <code>.wcf.XmlMsg xml = 9;</code>
       * @return Whether the xml field is set.
       */
      @java.lang.Override
      public boolean hasXml() {
        return msgCase_ == 9;
      }
      /**
       * <pre>
       * XML参数结构
       * </pre>
       *
       * <code>.wcf.XmlMsg xml = 9;</code>
       * @return The xml.
       */
      @java.lang.Override
      public com.iamteer.Wcf.XmlMsg getXml() {
        if (xmlBuilder_ == null) {
          if (msgCase_ == 9) {
            return (com.iamteer.Wcf.XmlMsg) msg_;
          }
          return com.iamteer.Wcf.XmlMsg.getDefaultInstance();
        } else {
          if (msgCase_ == 9) {
            return xmlBuilder_.getMessage();
          }
          return com.iamteer.Wcf.XmlMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * XML参数结构
       * </pre>
       *
       * <code>.wcf.XmlMsg xml = 9;</code>
       */
      public Builder setXml(com.iamteer.Wcf.XmlMsg value) {
        if (xmlBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          xmlBuilder_.setMessage(value);
        }
        msgCase_ = 9;
        return this;
      }
      /**
       * <pre>
       * XML参数结构
       * </pre>
       *
       * <code>.wcf.XmlMsg xml = 9;</code>
       */
      public Builder setXml(
          com.iamteer.Wcf.XmlMsg.Builder builderForValue) {
        if (xmlBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          xmlBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 9;
        return this;
      }
      /**
       * <pre>
       * XML参数结构
       * </pre>
       *
       * <code>.wcf.XmlMsg xml = 9;</code>
       */
      public Builder mergeXml(com.iamteer.Wcf.XmlMsg value) {
        if (xmlBuilder_ == null) {
          if (msgCase_ == 9 &&
              msg_ != com.iamteer.Wcf.XmlMsg.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.XmlMsg.newBuilder((com.iamteer.Wcf.XmlMsg) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 9) {
            xmlBuilder_.mergeFrom(value);
          }
          xmlBuilder_.setMessage(value);
        }
        msgCase_ = 9;
        return this;
      }
      /**
       * <pre>
       * XML参数结构
       * </pre>
       *
       * <code>.wcf.XmlMsg xml = 9;</code>
       */
      public Builder clearXml() {
        if (xmlBuilder_ == null) {
          if (msgCase_ == 9) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 9) {
            msgCase_ = 0;
            msg_ = null;
          }
          xmlBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * XML参数结构
       * </pre>
       *
       * <code>.wcf.XmlMsg xml = 9;</code>
       */
      public com.iamteer.Wcf.XmlMsg.Builder getXmlBuilder() {
        return getXmlFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * XML参数结构
       * </pre>
       *
       * <code>.wcf.XmlMsg xml = 9;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.XmlMsgOrBuilder getXmlOrBuilder() {
        if ((msgCase_ == 9) && (xmlBuilder_ != null)) {
          return xmlBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 9) {
            return (com.iamteer.Wcf.XmlMsg) msg_;
          }
          return com.iamteer.Wcf.XmlMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * XML参数结构
       * </pre>
       *
       * <code>.wcf.XmlMsg xml = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.XmlMsg, com.iamteer.Wcf.XmlMsg.Builder, com.iamteer.Wcf.XmlMsgOrBuilder> 
          getXmlFieldBuilder() {
        if (xmlBuilder_ == null) {
          if (!(msgCase_ == 9)) {
            msg_ = com.iamteer.Wcf.XmlMsg.getDefaultInstance();
          }
          xmlBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.XmlMsg, com.iamteer.Wcf.XmlMsg.Builder, com.iamteer.Wcf.XmlMsgOrBuilder>(
                  (com.iamteer.Wcf.XmlMsg) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 9;
        onChanged();;
        return xmlBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DecPath, com.iamteer.Wcf.DecPath.Builder, com.iamteer.Wcf.DecPathOrBuilder> decBuilder_;
      /**
       * <pre>
       * 解密图片参数结构
       * </pre>
       *
       * <code>.wcf.DecPath dec = 10;</code>
       * @return Whether the dec field is set.
       */
      @java.lang.Override
      public boolean hasDec() {
        return msgCase_ == 10;
      }
      /**
       * <pre>
       * 解密图片参数结构
       * </pre>
       *
       * <code>.wcf.DecPath dec = 10;</code>
       * @return The dec.
       */
      @java.lang.Override
      public com.iamteer.Wcf.DecPath getDec() {
        if (decBuilder_ == null) {
          if (msgCase_ == 10) {
            return (com.iamteer.Wcf.DecPath) msg_;
          }
          return com.iamteer.Wcf.DecPath.getDefaultInstance();
        } else {
          if (msgCase_ == 10) {
            return decBuilder_.getMessage();
          }
          return com.iamteer.Wcf.DecPath.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 解密图片参数结构
       * </pre>
       *
       * <code>.wcf.DecPath dec = 10;</code>
       */
      public Builder setDec(com.iamteer.Wcf.DecPath value) {
        if (decBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          decBuilder_.setMessage(value);
        }
        msgCase_ = 10;
        return this;
      }
      /**
       * <pre>
       * 解密图片参数结构
       * </pre>
       *
       * <code>.wcf.DecPath dec = 10;</code>
       */
      public Builder setDec(
          com.iamteer.Wcf.DecPath.Builder builderForValue) {
        if (decBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          decBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 10;
        return this;
      }
      /**
       * <pre>
       * 解密图片参数结构
       * </pre>
       *
       * <code>.wcf.DecPath dec = 10;</code>
       */
      public Builder mergeDec(com.iamteer.Wcf.DecPath value) {
        if (decBuilder_ == null) {
          if (msgCase_ == 10 &&
              msg_ != com.iamteer.Wcf.DecPath.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.DecPath.newBuilder((com.iamteer.Wcf.DecPath) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 10) {
            decBuilder_.mergeFrom(value);
          }
          decBuilder_.setMessage(value);
        }
        msgCase_ = 10;
        return this;
      }
      /**
       * <pre>
       * 解密图片参数结构
       * </pre>
       *
       * <code>.wcf.DecPath dec = 10;</code>
       */
      public Builder clearDec() {
        if (decBuilder_ == null) {
          if (msgCase_ == 10) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 10) {
            msgCase_ = 0;
            msg_ = null;
          }
          decBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 解密图片参数结构
       * </pre>
       *
       * <code>.wcf.DecPath dec = 10;</code>
       */
      public com.iamteer.Wcf.DecPath.Builder getDecBuilder() {
        return getDecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 解密图片参数结构
       * </pre>
       *
       * <code>.wcf.DecPath dec = 10;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.DecPathOrBuilder getDecOrBuilder() {
        if ((msgCase_ == 10) && (decBuilder_ != null)) {
          return decBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 10) {
            return (com.iamteer.Wcf.DecPath) msg_;
          }
          return com.iamteer.Wcf.DecPath.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 解密图片参数结构
       * </pre>
       *
       * <code>.wcf.DecPath dec = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DecPath, com.iamteer.Wcf.DecPath.Builder, com.iamteer.Wcf.DecPathOrBuilder> 
          getDecFieldBuilder() {
        if (decBuilder_ == null) {
          if (!(msgCase_ == 10)) {
            msg_ = com.iamteer.Wcf.DecPath.getDefaultInstance();
          }
          decBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.DecPath, com.iamteer.Wcf.DecPath.Builder, com.iamteer.Wcf.DecPathOrBuilder>(
                  (com.iamteer.Wcf.DecPath) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 10;
        onChanged();;
        return decBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.Transfer, com.iamteer.Wcf.Transfer.Builder, com.iamteer.Wcf.TransferOrBuilder> tfBuilder_;
      /**
       * <pre>
       * 接收转账参数结构
       * </pre>
       *
       * <code>.wcf.Transfer tf = 11;</code>
       * @return Whether the tf field is set.
       */
      @java.lang.Override
      public boolean hasTf() {
        return msgCase_ == 11;
      }
      /**
       * <pre>
       * 接收转账参数结构
       * </pre>
       *
       * <code>.wcf.Transfer tf = 11;</code>
       * @return The tf.
       */
      @java.lang.Override
      public com.iamteer.Wcf.Transfer getTf() {
        if (tfBuilder_ == null) {
          if (msgCase_ == 11) {
            return (com.iamteer.Wcf.Transfer) msg_;
          }
          return com.iamteer.Wcf.Transfer.getDefaultInstance();
        } else {
          if (msgCase_ == 11) {
            return tfBuilder_.getMessage();
          }
          return com.iamteer.Wcf.Transfer.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 接收转账参数结构
       * </pre>
       *
       * <code>.wcf.Transfer tf = 11;</code>
       */
      public Builder setTf(com.iamteer.Wcf.Transfer value) {
        if (tfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          tfBuilder_.setMessage(value);
        }
        msgCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * 接收转账参数结构
       * </pre>
       *
       * <code>.wcf.Transfer tf = 11;</code>
       */
      public Builder setTf(
          com.iamteer.Wcf.Transfer.Builder builderForValue) {
        if (tfBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          tfBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * 接收转账参数结构
       * </pre>
       *
       * <code>.wcf.Transfer tf = 11;</code>
       */
      public Builder mergeTf(com.iamteer.Wcf.Transfer value) {
        if (tfBuilder_ == null) {
          if (msgCase_ == 11 &&
              msg_ != com.iamteer.Wcf.Transfer.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.Transfer.newBuilder((com.iamteer.Wcf.Transfer) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 11) {
            tfBuilder_.mergeFrom(value);
          }
          tfBuilder_.setMessage(value);
        }
        msgCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * 接收转账参数结构
       * </pre>
       *
       * <code>.wcf.Transfer tf = 11;</code>
       */
      public Builder clearTf() {
        if (tfBuilder_ == null) {
          if (msgCase_ == 11) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 11) {
            msgCase_ = 0;
            msg_ = null;
          }
          tfBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 接收转账参数结构
       * </pre>
       *
       * <code>.wcf.Transfer tf = 11;</code>
       */
      public com.iamteer.Wcf.Transfer.Builder getTfBuilder() {
        return getTfFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 接收转账参数结构
       * </pre>
       *
       * <code>.wcf.Transfer tf = 11;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.TransferOrBuilder getTfOrBuilder() {
        if ((msgCase_ == 11) && (tfBuilder_ != null)) {
          return tfBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 11) {
            return (com.iamteer.Wcf.Transfer) msg_;
          }
          return com.iamteer.Wcf.Transfer.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 接收转账参数结构
       * </pre>
       *
       * <code>.wcf.Transfer tf = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.Transfer, com.iamteer.Wcf.Transfer.Builder, com.iamteer.Wcf.TransferOrBuilder> 
          getTfFieldBuilder() {
        if (tfBuilder_ == null) {
          if (!(msgCase_ == 11)) {
            msg_ = com.iamteer.Wcf.Transfer.getDefaultInstance();
          }
          tfBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.Transfer, com.iamteer.Wcf.Transfer.Builder, com.iamteer.Wcf.TransferOrBuilder>(
                  (com.iamteer.Wcf.Transfer) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 11;
        onChanged();;
        return tfBuilder_;
      }

      /**
       * <pre>
       * 64 位整数，通用
       * </pre>
       *
       * <code>uint64 ui64 = 12 [jstype = JS_STRING];</code>
       * @return Whether the ui64 field is set.
       */
      public boolean hasUi64() {
        return msgCase_ == 12;
      }
      /**
       * <pre>
       * 64 位整数，通用
       * </pre>
       *
       * <code>uint64 ui64 = 12 [jstype = JS_STRING];</code>
       * @return The ui64.
       */
      public long getUi64() {
        if (msgCase_ == 12) {
          return (java.lang.Long) msg_;
        }
        return 0L;
      }
      /**
       * <pre>
       * 64 位整数，通用
       * </pre>
       *
       * <code>uint64 ui64 = 12 [jstype = JS_STRING];</code>
       * @param value The ui64 to set.
       * @return This builder for chaining.
       */
      public Builder setUi64(long value) {
        msgCase_ = 12;
        msg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 64 位整数，通用
       * </pre>
       *
       * <code>uint64 ui64 = 12 [jstype = JS_STRING];</code>
       * @return This builder for chaining.
       */
      public Builder clearUi64() {
        if (msgCase_ == 12) {
          msgCase_ = 0;
          msg_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <pre>
       * 布尔值
       * </pre>
       *
       * <code>bool flag = 13;</code>
       * @return Whether the flag field is set.
       */
      public boolean hasFlag() {
        return msgCase_ == 13;
      }
      /**
       * <pre>
       * 布尔值
       * </pre>
       *
       * <code>bool flag = 13;</code>
       * @return The flag.
       */
      public boolean getFlag() {
        if (msgCase_ == 13) {
          return (java.lang.Boolean) msg_;
        }
        return false;
      }
      /**
       * <pre>
       * 布尔值
       * </pre>
       *
       * <code>bool flag = 13;</code>
       * @param value The flag to set.
       * @return This builder for chaining.
       */
      public Builder setFlag(boolean value) {
        msgCase_ = 13;
        msg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 布尔值
       * </pre>
       *
       * <code>bool flag = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearFlag() {
        if (msgCase_ == 13) {
          msgCase_ = 0;
          msg_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.AttachMsg, com.iamteer.Wcf.AttachMsg.Builder, com.iamteer.Wcf.AttachMsgOrBuilder> attBuilder_;
      /**
       * <pre>
       * 下载图片、视频、文件参数结构
       * </pre>
       *
       * <code>.wcf.AttachMsg att = 14;</code>
       * @return Whether the att field is set.
       */
      @java.lang.Override
      public boolean hasAtt() {
        return msgCase_ == 14;
      }
      /**
       * <pre>
       * 下载图片、视频、文件参数结构
       * </pre>
       *
       * <code>.wcf.AttachMsg att = 14;</code>
       * @return The att.
       */
      @java.lang.Override
      public com.iamteer.Wcf.AttachMsg getAtt() {
        if (attBuilder_ == null) {
          if (msgCase_ == 14) {
            return (com.iamteer.Wcf.AttachMsg) msg_;
          }
          return com.iamteer.Wcf.AttachMsg.getDefaultInstance();
        } else {
          if (msgCase_ == 14) {
            return attBuilder_.getMessage();
          }
          return com.iamteer.Wcf.AttachMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 下载图片、视频、文件参数结构
       * </pre>
       *
       * <code>.wcf.AttachMsg att = 14;</code>
       */
      public Builder setAtt(com.iamteer.Wcf.AttachMsg value) {
        if (attBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          attBuilder_.setMessage(value);
        }
        msgCase_ = 14;
        return this;
      }
      /**
       * <pre>
       * 下载图片、视频、文件参数结构
       * </pre>
       *
       * <code>.wcf.AttachMsg att = 14;</code>
       */
      public Builder setAtt(
          com.iamteer.Wcf.AttachMsg.Builder builderForValue) {
        if (attBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          attBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 14;
        return this;
      }
      /**
       * <pre>
       * 下载图片、视频、文件参数结构
       * </pre>
       *
       * <code>.wcf.AttachMsg att = 14;</code>
       */
      public Builder mergeAtt(com.iamteer.Wcf.AttachMsg value) {
        if (attBuilder_ == null) {
          if (msgCase_ == 14 &&
              msg_ != com.iamteer.Wcf.AttachMsg.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.AttachMsg.newBuilder((com.iamteer.Wcf.AttachMsg) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 14) {
            attBuilder_.mergeFrom(value);
          }
          attBuilder_.setMessage(value);
        }
        msgCase_ = 14;
        return this;
      }
      /**
       * <pre>
       * 下载图片、视频、文件参数结构
       * </pre>
       *
       * <code>.wcf.AttachMsg att = 14;</code>
       */
      public Builder clearAtt() {
        if (attBuilder_ == null) {
          if (msgCase_ == 14) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 14) {
            msgCase_ = 0;
            msg_ = null;
          }
          attBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 下载图片、视频、文件参数结构
       * </pre>
       *
       * <code>.wcf.AttachMsg att = 14;</code>
       */
      public com.iamteer.Wcf.AttachMsg.Builder getAttBuilder() {
        return getAttFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 下载图片、视频、文件参数结构
       * </pre>
       *
       * <code>.wcf.AttachMsg att = 14;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.AttachMsgOrBuilder getAttOrBuilder() {
        if ((msgCase_ == 14) && (attBuilder_ != null)) {
          return attBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 14) {
            return (com.iamteer.Wcf.AttachMsg) msg_;
          }
          return com.iamteer.Wcf.AttachMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 下载图片、视频、文件参数结构
       * </pre>
       *
       * <code>.wcf.AttachMsg att = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.AttachMsg, com.iamteer.Wcf.AttachMsg.Builder, com.iamteer.Wcf.AttachMsgOrBuilder> 
          getAttFieldBuilder() {
        if (attBuilder_ == null) {
          if (!(msgCase_ == 14)) {
            msg_ = com.iamteer.Wcf.AttachMsg.getDefaultInstance();
          }
          attBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.AttachMsg, com.iamteer.Wcf.AttachMsg.Builder, com.iamteer.Wcf.AttachMsgOrBuilder>(
                  (com.iamteer.Wcf.AttachMsg) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 14;
        onChanged();;
        return attBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.AudioMsg, com.iamteer.Wcf.AudioMsg.Builder, com.iamteer.Wcf.AudioMsgOrBuilder> amBuilder_;
      /**
       * <pre>
       * 保存语音参数结构
       * </pre>
       *
       * <code>.wcf.AudioMsg am = 15;</code>
       * @return Whether the am field is set.
       */
      @java.lang.Override
      public boolean hasAm() {
        return msgCase_ == 15;
      }
      /**
       * <pre>
       * 保存语音参数结构
       * </pre>
       *
       * <code>.wcf.AudioMsg am = 15;</code>
       * @return The am.
       */
      @java.lang.Override
      public com.iamteer.Wcf.AudioMsg getAm() {
        if (amBuilder_ == null) {
          if (msgCase_ == 15) {
            return (com.iamteer.Wcf.AudioMsg) msg_;
          }
          return com.iamteer.Wcf.AudioMsg.getDefaultInstance();
        } else {
          if (msgCase_ == 15) {
            return amBuilder_.getMessage();
          }
          return com.iamteer.Wcf.AudioMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 保存语音参数结构
       * </pre>
       *
       * <code>.wcf.AudioMsg am = 15;</code>
       */
      public Builder setAm(com.iamteer.Wcf.AudioMsg value) {
        if (amBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          amBuilder_.setMessage(value);
        }
        msgCase_ = 15;
        return this;
      }
      /**
       * <pre>
       * 保存语音参数结构
       * </pre>
       *
       * <code>.wcf.AudioMsg am = 15;</code>
       */
      public Builder setAm(
          com.iamteer.Wcf.AudioMsg.Builder builderForValue) {
        if (amBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          amBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 15;
        return this;
      }
      /**
       * <pre>
       * 保存语音参数结构
       * </pre>
       *
       * <code>.wcf.AudioMsg am = 15;</code>
       */
      public Builder mergeAm(com.iamteer.Wcf.AudioMsg value) {
        if (amBuilder_ == null) {
          if (msgCase_ == 15 &&
              msg_ != com.iamteer.Wcf.AudioMsg.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.AudioMsg.newBuilder((com.iamteer.Wcf.AudioMsg) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 15) {
            amBuilder_.mergeFrom(value);
          }
          amBuilder_.setMessage(value);
        }
        msgCase_ = 15;
        return this;
      }
      /**
       * <pre>
       * 保存语音参数结构
       * </pre>
       *
       * <code>.wcf.AudioMsg am = 15;</code>
       */
      public Builder clearAm() {
        if (amBuilder_ == null) {
          if (msgCase_ == 15) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 15) {
            msgCase_ = 0;
            msg_ = null;
          }
          amBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 保存语音参数结构
       * </pre>
       *
       * <code>.wcf.AudioMsg am = 15;</code>
       */
      public com.iamteer.Wcf.AudioMsg.Builder getAmBuilder() {
        return getAmFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 保存语音参数结构
       * </pre>
       *
       * <code>.wcf.AudioMsg am = 15;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.AudioMsgOrBuilder getAmOrBuilder() {
        if ((msgCase_ == 15) && (amBuilder_ != null)) {
          return amBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 15) {
            return (com.iamteer.Wcf.AudioMsg) msg_;
          }
          return com.iamteer.Wcf.AudioMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 保存语音参数结构
       * </pre>
       *
       * <code>.wcf.AudioMsg am = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.AudioMsg, com.iamteer.Wcf.AudioMsg.Builder, com.iamteer.Wcf.AudioMsgOrBuilder> 
          getAmFieldBuilder() {
        if (amBuilder_ == null) {
          if (!(msgCase_ == 15)) {
            msg_ = com.iamteer.Wcf.AudioMsg.getDefaultInstance();
          }
          amBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.AudioMsg, com.iamteer.Wcf.AudioMsg.Builder, com.iamteer.Wcf.AudioMsgOrBuilder>(
                  (com.iamteer.Wcf.AudioMsg) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 15;
        onChanged();;
        return amBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.RichText, com.iamteer.Wcf.RichText.Builder, com.iamteer.Wcf.RichTextOrBuilder> rtBuilder_;
      /**
       * <pre>
       * 发送卡片消息结构
       * </pre>
       *
       * <code>.wcf.RichText rt = 16;</code>
       * @return Whether the rt field is set.
       */
      @java.lang.Override
      public boolean hasRt() {
        return msgCase_ == 16;
      }
      /**
       * <pre>
       * 发送卡片消息结构
       * </pre>
       *
       * <code>.wcf.RichText rt = 16;</code>
       * @return The rt.
       */
      @java.lang.Override
      public com.iamteer.Wcf.RichText getRt() {
        if (rtBuilder_ == null) {
          if (msgCase_ == 16) {
            return (com.iamteer.Wcf.RichText) msg_;
          }
          return com.iamteer.Wcf.RichText.getDefaultInstance();
        } else {
          if (msgCase_ == 16) {
            return rtBuilder_.getMessage();
          }
          return com.iamteer.Wcf.RichText.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 发送卡片消息结构
       * </pre>
       *
       * <code>.wcf.RichText rt = 16;</code>
       */
      public Builder setRt(com.iamteer.Wcf.RichText value) {
        if (rtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          rtBuilder_.setMessage(value);
        }
        msgCase_ = 16;
        return this;
      }
      /**
       * <pre>
       * 发送卡片消息结构
       * </pre>
       *
       * <code>.wcf.RichText rt = 16;</code>
       */
      public Builder setRt(
          com.iamteer.Wcf.RichText.Builder builderForValue) {
        if (rtBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          rtBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 16;
        return this;
      }
      /**
       * <pre>
       * 发送卡片消息结构
       * </pre>
       *
       * <code>.wcf.RichText rt = 16;</code>
       */
      public Builder mergeRt(com.iamteer.Wcf.RichText value) {
        if (rtBuilder_ == null) {
          if (msgCase_ == 16 &&
              msg_ != com.iamteer.Wcf.RichText.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.RichText.newBuilder((com.iamteer.Wcf.RichText) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 16) {
            rtBuilder_.mergeFrom(value);
          }
          rtBuilder_.setMessage(value);
        }
        msgCase_ = 16;
        return this;
      }
      /**
       * <pre>
       * 发送卡片消息结构
       * </pre>
       *
       * <code>.wcf.RichText rt = 16;</code>
       */
      public Builder clearRt() {
        if (rtBuilder_ == null) {
          if (msgCase_ == 16) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 16) {
            msgCase_ = 0;
            msg_ = null;
          }
          rtBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 发送卡片消息结构
       * </pre>
       *
       * <code>.wcf.RichText rt = 16;</code>
       */
      public com.iamteer.Wcf.RichText.Builder getRtBuilder() {
        return getRtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 发送卡片消息结构
       * </pre>
       *
       * <code>.wcf.RichText rt = 16;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.RichTextOrBuilder getRtOrBuilder() {
        if ((msgCase_ == 16) && (rtBuilder_ != null)) {
          return rtBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 16) {
            return (com.iamteer.Wcf.RichText) msg_;
          }
          return com.iamteer.Wcf.RichText.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 发送卡片消息结构
       * </pre>
       *
       * <code>.wcf.RichText rt = 16;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.RichText, com.iamteer.Wcf.RichText.Builder, com.iamteer.Wcf.RichTextOrBuilder> 
          getRtFieldBuilder() {
        if (rtBuilder_ == null) {
          if (!(msgCase_ == 16)) {
            msg_ = com.iamteer.Wcf.RichText.getDefaultInstance();
          }
          rtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.RichText, com.iamteer.Wcf.RichText.Builder, com.iamteer.Wcf.RichTextOrBuilder>(
                  (com.iamteer.Wcf.RichText) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 16;
        onChanged();;
        return rtBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.PatMsg, com.iamteer.Wcf.PatMsg.Builder, com.iamteer.Wcf.PatMsgOrBuilder> pmBuilder_;
      /**
       * <pre>
       * 发送拍一拍参数结构
       * </pre>
       *
       * <code>.wcf.PatMsg pm = 17;</code>
       * @return Whether the pm field is set.
       */
      @java.lang.Override
      public boolean hasPm() {
        return msgCase_ == 17;
      }
      /**
       * <pre>
       * 发送拍一拍参数结构
       * </pre>
       *
       * <code>.wcf.PatMsg pm = 17;</code>
       * @return The pm.
       */
      @java.lang.Override
      public com.iamteer.Wcf.PatMsg getPm() {
        if (pmBuilder_ == null) {
          if (msgCase_ == 17) {
            return (com.iamteer.Wcf.PatMsg) msg_;
          }
          return com.iamteer.Wcf.PatMsg.getDefaultInstance();
        } else {
          if (msgCase_ == 17) {
            return pmBuilder_.getMessage();
          }
          return com.iamteer.Wcf.PatMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 发送拍一拍参数结构
       * </pre>
       *
       * <code>.wcf.PatMsg pm = 17;</code>
       */
      public Builder setPm(com.iamteer.Wcf.PatMsg value) {
        if (pmBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          pmBuilder_.setMessage(value);
        }
        msgCase_ = 17;
        return this;
      }
      /**
       * <pre>
       * 发送拍一拍参数结构
       * </pre>
       *
       * <code>.wcf.PatMsg pm = 17;</code>
       */
      public Builder setPm(
          com.iamteer.Wcf.PatMsg.Builder builderForValue) {
        if (pmBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          pmBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 17;
        return this;
      }
      /**
       * <pre>
       * 发送拍一拍参数结构
       * </pre>
       *
       * <code>.wcf.PatMsg pm = 17;</code>
       */
      public Builder mergePm(com.iamteer.Wcf.PatMsg value) {
        if (pmBuilder_ == null) {
          if (msgCase_ == 17 &&
              msg_ != com.iamteer.Wcf.PatMsg.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.PatMsg.newBuilder((com.iamteer.Wcf.PatMsg) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 17) {
            pmBuilder_.mergeFrom(value);
          }
          pmBuilder_.setMessage(value);
        }
        msgCase_ = 17;
        return this;
      }
      /**
       * <pre>
       * 发送拍一拍参数结构
       * </pre>
       *
       * <code>.wcf.PatMsg pm = 17;</code>
       */
      public Builder clearPm() {
        if (pmBuilder_ == null) {
          if (msgCase_ == 17) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 17) {
            msgCase_ = 0;
            msg_ = null;
          }
          pmBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 发送拍一拍参数结构
       * </pre>
       *
       * <code>.wcf.PatMsg pm = 17;</code>
       */
      public com.iamteer.Wcf.PatMsg.Builder getPmBuilder() {
        return getPmFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 发送拍一拍参数结构
       * </pre>
       *
       * <code>.wcf.PatMsg pm = 17;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.PatMsgOrBuilder getPmOrBuilder() {
        if ((msgCase_ == 17) && (pmBuilder_ != null)) {
          return pmBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 17) {
            return (com.iamteer.Wcf.PatMsg) msg_;
          }
          return com.iamteer.Wcf.PatMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 发送拍一拍参数结构
       * </pre>
       *
       * <code>.wcf.PatMsg pm = 17;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.PatMsg, com.iamteer.Wcf.PatMsg.Builder, com.iamteer.Wcf.PatMsgOrBuilder> 
          getPmFieldBuilder() {
        if (pmBuilder_ == null) {
          if (!(msgCase_ == 17)) {
            msg_ = com.iamteer.Wcf.PatMsg.getDefaultInstance();
          }
          pmBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.PatMsg, com.iamteer.Wcf.PatMsg.Builder, com.iamteer.Wcf.PatMsgOrBuilder>(
                  (com.iamteer.Wcf.PatMsg) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 17;
        onChanged();;
        return pmBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.ForwardMsg, com.iamteer.Wcf.ForwardMsg.Builder, com.iamteer.Wcf.ForwardMsgOrBuilder> fmBuilder_;
      /**
       * <pre>
       * 转发消息参数结构
       * </pre>
       *
       * <code>.wcf.ForwardMsg fm = 18;</code>
       * @return Whether the fm field is set.
       */
      @java.lang.Override
      public boolean hasFm() {
        return msgCase_ == 18;
      }
      /**
       * <pre>
       * 转发消息参数结构
       * </pre>
       *
       * <code>.wcf.ForwardMsg fm = 18;</code>
       * @return The fm.
       */
      @java.lang.Override
      public com.iamteer.Wcf.ForwardMsg getFm() {
        if (fmBuilder_ == null) {
          if (msgCase_ == 18) {
            return (com.iamteer.Wcf.ForwardMsg) msg_;
          }
          return com.iamteer.Wcf.ForwardMsg.getDefaultInstance();
        } else {
          if (msgCase_ == 18) {
            return fmBuilder_.getMessage();
          }
          return com.iamteer.Wcf.ForwardMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 转发消息参数结构
       * </pre>
       *
       * <code>.wcf.ForwardMsg fm = 18;</code>
       */
      public Builder setFm(com.iamteer.Wcf.ForwardMsg value) {
        if (fmBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          fmBuilder_.setMessage(value);
        }
        msgCase_ = 18;
        return this;
      }
      /**
       * <pre>
       * 转发消息参数结构
       * </pre>
       *
       * <code>.wcf.ForwardMsg fm = 18;</code>
       */
      public Builder setFm(
          com.iamteer.Wcf.ForwardMsg.Builder builderForValue) {
        if (fmBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          fmBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 18;
        return this;
      }
      /**
       * <pre>
       * 转发消息参数结构
       * </pre>
       *
       * <code>.wcf.ForwardMsg fm = 18;</code>
       */
      public Builder mergeFm(com.iamteer.Wcf.ForwardMsg value) {
        if (fmBuilder_ == null) {
          if (msgCase_ == 18 &&
              msg_ != com.iamteer.Wcf.ForwardMsg.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.ForwardMsg.newBuilder((com.iamteer.Wcf.ForwardMsg) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 18) {
            fmBuilder_.mergeFrom(value);
          }
          fmBuilder_.setMessage(value);
        }
        msgCase_ = 18;
        return this;
      }
      /**
       * <pre>
       * 转发消息参数结构
       * </pre>
       *
       * <code>.wcf.ForwardMsg fm = 18;</code>
       */
      public Builder clearFm() {
        if (fmBuilder_ == null) {
          if (msgCase_ == 18) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 18) {
            msgCase_ = 0;
            msg_ = null;
          }
          fmBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 转发消息参数结构
       * </pre>
       *
       * <code>.wcf.ForwardMsg fm = 18;</code>
       */
      public com.iamteer.Wcf.ForwardMsg.Builder getFmBuilder() {
        return getFmFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 转发消息参数结构
       * </pre>
       *
       * <code>.wcf.ForwardMsg fm = 18;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.ForwardMsgOrBuilder getFmOrBuilder() {
        if ((msgCase_ == 18) && (fmBuilder_ != null)) {
          return fmBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 18) {
            return (com.iamteer.Wcf.ForwardMsg) msg_;
          }
          return com.iamteer.Wcf.ForwardMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 转发消息参数结构
       * </pre>
       *
       * <code>.wcf.ForwardMsg fm = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.ForwardMsg, com.iamteer.Wcf.ForwardMsg.Builder, com.iamteer.Wcf.ForwardMsgOrBuilder> 
          getFmFieldBuilder() {
        if (fmBuilder_ == null) {
          if (!(msgCase_ == 18)) {
            msg_ = com.iamteer.Wcf.ForwardMsg.getDefaultInstance();
          }
          fmBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.ForwardMsg, com.iamteer.Wcf.ForwardMsg.Builder, com.iamteer.Wcf.ForwardMsgOrBuilder>(
                  (com.iamteer.Wcf.ForwardMsg) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 18;
        onChanged();;
        return fmBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.Request)
    }

    // @@protoc_insertion_point(class_scope:wcf.Request)
    private static final com.iamteer.Wcf.Request DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.Request();
    }

    public static com.iamteer.Wcf.Request getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.Request getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.Response)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.wcf.Functions func = 1;</code>
     * @return The enum numeric value on the wire for func.
     */
    int getFuncValue();
    /**
     * <code>.wcf.Functions func = 1;</code>
     * @return The func.
     */
    com.iamteer.Wcf.Functions getFunc();

    /**
     * <pre>
     * Int 状态，通用
     * </pre>
     *
     * <code>int32 status = 2;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Int 状态，通用
     * </pre>
     *
     * <code>int32 status = 2;</code>
     * @return The status.
     */
    int getStatus();

    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return Whether the str field is set.
     */
    boolean hasStr();
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return The str.
     */
    java.lang.String getStr();
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return The bytes for str.
     */
    com.google.protobuf.ByteString
        getStrBytes();

    /**
     * <pre>
     * 微信消息
     * </pre>
     *
     * <code>.wcf.WxMsg wxmsg = 4;</code>
     * @return Whether the wxmsg field is set.
     */
    boolean hasWxmsg();
    /**
     * <pre>
     * 微信消息
     * </pre>
     *
     * <code>.wcf.WxMsg wxmsg = 4;</code>
     * @return The wxmsg.
     */
    com.iamteer.Wcf.WxMsg getWxmsg();
    /**
     * <pre>
     * 微信消息
     * </pre>
     *
     * <code>.wcf.WxMsg wxmsg = 4;</code>
     */
    com.iamteer.Wcf.WxMsgOrBuilder getWxmsgOrBuilder();

    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>.wcf.MsgTypes types = 5;</code>
     * @return Whether the types field is set.
     */
    boolean hasTypes();
    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>.wcf.MsgTypes types = 5;</code>
     * @return The types.
     */
    com.iamteer.Wcf.MsgTypes getTypes();
    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>.wcf.MsgTypes types = 5;</code>
     */
    com.iamteer.Wcf.MsgTypesOrBuilder getTypesOrBuilder();

    /**
     * <pre>
     * 联系人
     * </pre>
     *
     * <code>.wcf.RpcContacts contacts = 6;</code>
     * @return Whether the contacts field is set.
     */
    boolean hasContacts();
    /**
     * <pre>
     * 联系人
     * </pre>
     *
     * <code>.wcf.RpcContacts contacts = 6;</code>
     * @return The contacts.
     */
    com.iamteer.Wcf.RpcContacts getContacts();
    /**
     * <pre>
     * 联系人
     * </pre>
     *
     * <code>.wcf.RpcContacts contacts = 6;</code>
     */
    com.iamteer.Wcf.RpcContactsOrBuilder getContactsOrBuilder();

    /**
     * <pre>
     * 数据库列表
     * </pre>
     *
     * <code>.wcf.DbNames dbs = 7;</code>
     * @return Whether the dbs field is set.
     */
    boolean hasDbs();
    /**
     * <pre>
     * 数据库列表
     * </pre>
     *
     * <code>.wcf.DbNames dbs = 7;</code>
     * @return The dbs.
     */
    com.iamteer.Wcf.DbNames getDbs();
    /**
     * <pre>
     * 数据库列表
     * </pre>
     *
     * <code>.wcf.DbNames dbs = 7;</code>
     */
    com.iamteer.Wcf.DbNamesOrBuilder getDbsOrBuilder();

    /**
     * <pre>
     * 表列表
     * </pre>
     *
     * <code>.wcf.DbTables tables = 8;</code>
     * @return Whether the tables field is set.
     */
    boolean hasTables();
    /**
     * <pre>
     * 表列表
     * </pre>
     *
     * <code>.wcf.DbTables tables = 8;</code>
     * @return The tables.
     */
    com.iamteer.Wcf.DbTables getTables();
    /**
     * <pre>
     * 表列表
     * </pre>
     *
     * <code>.wcf.DbTables tables = 8;</code>
     */
    com.iamteer.Wcf.DbTablesOrBuilder getTablesOrBuilder();

    /**
     * <pre>
     * 行列表
     * </pre>
     *
     * <code>.wcf.DbRows rows = 9;</code>
     * @return Whether the rows field is set.
     */
    boolean hasRows();
    /**
     * <pre>
     * 行列表
     * </pre>
     *
     * <code>.wcf.DbRows rows = 9;</code>
     * @return The rows.
     */
    com.iamteer.Wcf.DbRows getRows();
    /**
     * <pre>
     * 行列表
     * </pre>
     *
     * <code>.wcf.DbRows rows = 9;</code>
     */
    com.iamteer.Wcf.DbRowsOrBuilder getRowsOrBuilder();

    /**
     * <pre>
     * 个人信息
     * </pre>
     *
     * <code>.wcf.UserInfo ui = 10;</code>
     * @return Whether the ui field is set.
     */
    boolean hasUi();
    /**
     * <pre>
     * 个人信息
     * </pre>
     *
     * <code>.wcf.UserInfo ui = 10;</code>
     * @return The ui.
     */
    com.iamteer.Wcf.UserInfo getUi();
    /**
     * <pre>
     * 个人信息
     * </pre>
     *
     * <code>.wcf.UserInfo ui = 10;</code>
     */
    com.iamteer.Wcf.UserInfoOrBuilder getUiOrBuilder();

    /**
     * <pre>
     * OCR 结果
     * </pre>
     *
     * <code>.wcf.OcrMsg ocr = 11;</code>
     * @return Whether the ocr field is set.
     */
    boolean hasOcr();
    /**
     * <pre>
     * OCR 结果
     * </pre>
     *
     * <code>.wcf.OcrMsg ocr = 11;</code>
     * @return The ocr.
     */
    com.iamteer.Wcf.OcrMsg getOcr();
    /**
     * <pre>
     * OCR 结果
     * </pre>
     *
     * <code>.wcf.OcrMsg ocr = 11;</code>
     */
    com.iamteer.Wcf.OcrMsgOrBuilder getOcrOrBuilder();

    public com.iamteer.Wcf.Response.MsgCase getMsgCase();
  }
  /**
   * Protobuf type {@code wcf.Response}
   */
  public static final class Response extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.Response)
      ResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Response.newBuilder() to construct.
    private Response(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Response() {
      func_ = 0;
    }

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

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

              func_ = rawValue;
              break;
            }
            case 16: {
              msg_ = input.readInt32();
              msgCase_ = 2;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              msgCase_ = 3;
              msg_ = s;
              break;
            }
            case 34: {
              com.iamteer.Wcf.WxMsg.Builder subBuilder = null;
              if (msgCase_ == 4) {
                subBuilder = ((com.iamteer.Wcf.WxMsg) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.WxMsg.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.WxMsg) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 4;
              break;
            }
            case 42: {
              com.iamteer.Wcf.MsgTypes.Builder subBuilder = null;
              if (msgCase_ == 5) {
                subBuilder = ((com.iamteer.Wcf.MsgTypes) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.MsgTypes.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.MsgTypes) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 5;
              break;
            }
            case 50: {
              com.iamteer.Wcf.RpcContacts.Builder subBuilder = null;
              if (msgCase_ == 6) {
                subBuilder = ((com.iamteer.Wcf.RpcContacts) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.RpcContacts.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.RpcContacts) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 6;
              break;
            }
            case 58: {
              com.iamteer.Wcf.DbNames.Builder subBuilder = null;
              if (msgCase_ == 7) {
                subBuilder = ((com.iamteer.Wcf.DbNames) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.DbNames.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.DbNames) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 7;
              break;
            }
            case 66: {
              com.iamteer.Wcf.DbTables.Builder subBuilder = null;
              if (msgCase_ == 8) {
                subBuilder = ((com.iamteer.Wcf.DbTables) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.DbTables.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.DbTables) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 8;
              break;
            }
            case 74: {
              com.iamteer.Wcf.DbRows.Builder subBuilder = null;
              if (msgCase_ == 9) {
                subBuilder = ((com.iamteer.Wcf.DbRows) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.DbRows.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.DbRows) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 9;
              break;
            }
            case 82: {
              com.iamteer.Wcf.UserInfo.Builder subBuilder = null;
              if (msgCase_ == 10) {
                subBuilder = ((com.iamteer.Wcf.UserInfo) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.UserInfo.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.UserInfo) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 10;
              break;
            }
            case 90: {
              com.iamteer.Wcf.OcrMsg.Builder subBuilder = null;
              if (msgCase_ == 11) {
                subBuilder = ((com.iamteer.Wcf.OcrMsg) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.iamteer.Wcf.OcrMsg.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.iamteer.Wcf.OcrMsg) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 11;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_Response_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_Response_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.Response.class, com.iamteer.Wcf.Response.Builder.class);
    }

    private int msgCase_ = 0;
    private java.lang.Object msg_;
    public enum MsgCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      STATUS(2),
      STR(3),
      WXMSG(4),
      TYPES(5),
      CONTACTS(6),
      DBS(7),
      TABLES(8),
      ROWS(9),
      UI(10),
      OCR(11),
      MSG_NOT_SET(0);
      private final int value;
      private MsgCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static MsgCase valueOf(int value) {
        return forNumber(value);
      }

      public static MsgCase forNumber(int value) {
        switch (value) {
          case 2: return STATUS;
          case 3: return STR;
          case 4: return WXMSG;
          case 5: return TYPES;
          case 6: return CONTACTS;
          case 7: return DBS;
          case 8: return TABLES;
          case 9: return ROWS;
          case 10: return UI;
          case 11: return OCR;
          case 0: return MSG_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public MsgCase
    getMsgCase() {
      return MsgCase.forNumber(
          msgCase_);
    }

    public static final int FUNC_FIELD_NUMBER = 1;
    private int func_;
    /**
     * <code>.wcf.Functions func = 1;</code>
     * @return The enum numeric value on the wire for func.
     */
    @java.lang.Override public int getFuncValue() {
      return func_;
    }
    /**
     * <code>.wcf.Functions func = 1;</code>
     * @return The func.
     */
    @java.lang.Override public com.iamteer.Wcf.Functions getFunc() {
      @SuppressWarnings("deprecation")
      com.iamteer.Wcf.Functions result = com.iamteer.Wcf.Functions.valueOf(func_);
      return result == null ? com.iamteer.Wcf.Functions.UNRECOGNIZED : result;
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Int 状态，通用
     * </pre>
     *
     * <code>int32 status = 2;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return msgCase_ == 2;
    }
    /**
     * <pre>
     * Int 状态，通用
     * </pre>
     *
     * <code>int32 status = 2;</code>
     * @return The status.
     */
    @java.lang.Override
    public int getStatus() {
      if (msgCase_ == 2) {
        return (java.lang.Integer) msg_;
      }
      return 0;
    }

    public static final int STR_FIELD_NUMBER = 3;
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return Whether the str field is set.
     */
    public boolean hasStr() {
      return msgCase_ == 3;
    }
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return The str.
     */
    public java.lang.String getStr() {
      java.lang.Object ref = "";
      if (msgCase_ == 3) {
        ref = msg_;
      }
      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 (msgCase_ == 3) {
          msg_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * 字符串
     * </pre>
     *
     * <code>string str = 3;</code>
     * @return The bytes for str.
     */
    public com.google.protobuf.ByteString
        getStrBytes() {
      java.lang.Object ref = "";
      if (msgCase_ == 3) {
        ref = msg_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (msgCase_ == 3) {
          msg_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WXMSG_FIELD_NUMBER = 4;
    /**
     * <pre>
     * 微信消息
     * </pre>
     *
     * <code>.wcf.WxMsg wxmsg = 4;</code>
     * @return Whether the wxmsg field is set.
     */
    @java.lang.Override
    public boolean hasWxmsg() {
      return msgCase_ == 4;
    }
    /**
     * <pre>
     * 微信消息
     * </pre>
     *
     * <code>.wcf.WxMsg wxmsg = 4;</code>
     * @return The wxmsg.
     */
    @java.lang.Override
    public com.iamteer.Wcf.WxMsg getWxmsg() {
      if (msgCase_ == 4) {
         return (com.iamteer.Wcf.WxMsg) msg_;
      }
      return com.iamteer.Wcf.WxMsg.getDefaultInstance();
    }
    /**
     * <pre>
     * 微信消息
     * </pre>
     *
     * <code>.wcf.WxMsg wxmsg = 4;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.WxMsgOrBuilder getWxmsgOrBuilder() {
      if (msgCase_ == 4) {
         return (com.iamteer.Wcf.WxMsg) msg_;
      }
      return com.iamteer.Wcf.WxMsg.getDefaultInstance();
    }

    public static final int TYPES_FIELD_NUMBER = 5;
    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>.wcf.MsgTypes types = 5;</code>
     * @return Whether the types field is set.
     */
    @java.lang.Override
    public boolean hasTypes() {
      return msgCase_ == 5;
    }
    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>.wcf.MsgTypes types = 5;</code>
     * @return The types.
     */
    @java.lang.Override
    public com.iamteer.Wcf.MsgTypes getTypes() {
      if (msgCase_ == 5) {
         return (com.iamteer.Wcf.MsgTypes) msg_;
      }
      return com.iamteer.Wcf.MsgTypes.getDefaultInstance();
    }
    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>.wcf.MsgTypes types = 5;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.MsgTypesOrBuilder getTypesOrBuilder() {
      if (msgCase_ == 5) {
         return (com.iamteer.Wcf.MsgTypes) msg_;
      }
      return com.iamteer.Wcf.MsgTypes.getDefaultInstance();
    }

    public static final int CONTACTS_FIELD_NUMBER = 6;
    /**
     * <pre>
     * 联系人
     * </pre>
     *
     * <code>.wcf.RpcContacts contacts = 6;</code>
     * @return Whether the contacts field is set.
     */
    @java.lang.Override
    public boolean hasContacts() {
      return msgCase_ == 6;
    }
    /**
     * <pre>
     * 联系人
     * </pre>
     *
     * <code>.wcf.RpcContacts contacts = 6;</code>
     * @return The contacts.
     */
    @java.lang.Override
    public com.iamteer.Wcf.RpcContacts getContacts() {
      if (msgCase_ == 6) {
         return (com.iamteer.Wcf.RpcContacts) msg_;
      }
      return com.iamteer.Wcf.RpcContacts.getDefaultInstance();
    }
    /**
     * <pre>
     * 联系人
     * </pre>
     *
     * <code>.wcf.RpcContacts contacts = 6;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.RpcContactsOrBuilder getContactsOrBuilder() {
      if (msgCase_ == 6) {
         return (com.iamteer.Wcf.RpcContacts) msg_;
      }
      return com.iamteer.Wcf.RpcContacts.getDefaultInstance();
    }

    public static final int DBS_FIELD_NUMBER = 7;
    /**
     * <pre>
     * 数据库列表
     * </pre>
     *
     * <code>.wcf.DbNames dbs = 7;</code>
     * @return Whether the dbs field is set.
     */
    @java.lang.Override
    public boolean hasDbs() {
      return msgCase_ == 7;
    }
    /**
     * <pre>
     * 数据库列表
     * </pre>
     *
     * <code>.wcf.DbNames dbs = 7;</code>
     * @return The dbs.
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbNames getDbs() {
      if (msgCase_ == 7) {
         return (com.iamteer.Wcf.DbNames) msg_;
      }
      return com.iamteer.Wcf.DbNames.getDefaultInstance();
    }
    /**
     * <pre>
     * 数据库列表
     * </pre>
     *
     * <code>.wcf.DbNames dbs = 7;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbNamesOrBuilder getDbsOrBuilder() {
      if (msgCase_ == 7) {
         return (com.iamteer.Wcf.DbNames) msg_;
      }
      return com.iamteer.Wcf.DbNames.getDefaultInstance();
    }

    public static final int TABLES_FIELD_NUMBER = 8;
    /**
     * <pre>
     * 表列表
     * </pre>
     *
     * <code>.wcf.DbTables tables = 8;</code>
     * @return Whether the tables field is set.
     */
    @java.lang.Override
    public boolean hasTables() {
      return msgCase_ == 8;
    }
    /**
     * <pre>
     * 表列表
     * </pre>
     *
     * <code>.wcf.DbTables tables = 8;</code>
     * @return The tables.
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbTables getTables() {
      if (msgCase_ == 8) {
         return (com.iamteer.Wcf.DbTables) msg_;
      }
      return com.iamteer.Wcf.DbTables.getDefaultInstance();
    }
    /**
     * <pre>
     * 表列表
     * </pre>
     *
     * <code>.wcf.DbTables tables = 8;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbTablesOrBuilder getTablesOrBuilder() {
      if (msgCase_ == 8) {
         return (com.iamteer.Wcf.DbTables) msg_;
      }
      return com.iamteer.Wcf.DbTables.getDefaultInstance();
    }

    public static final int ROWS_FIELD_NUMBER = 9;
    /**
     * <pre>
     * 行列表
     * </pre>
     *
     * <code>.wcf.DbRows rows = 9;</code>
     * @return Whether the rows field is set.
     */
    @java.lang.Override
    public boolean hasRows() {
      return msgCase_ == 9;
    }
    /**
     * <pre>
     * 行列表
     * </pre>
     *
     * <code>.wcf.DbRows rows = 9;</code>
     * @return The rows.
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbRows getRows() {
      if (msgCase_ == 9) {
         return (com.iamteer.Wcf.DbRows) msg_;
      }
      return com.iamteer.Wcf.DbRows.getDefaultInstance();
    }
    /**
     * <pre>
     * 行列表
     * </pre>
     *
     * <code>.wcf.DbRows rows = 9;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbRowsOrBuilder getRowsOrBuilder() {
      if (msgCase_ == 9) {
         return (com.iamteer.Wcf.DbRows) msg_;
      }
      return com.iamteer.Wcf.DbRows.getDefaultInstance();
    }

    public static final int UI_FIELD_NUMBER = 10;
    /**
     * <pre>
     * 个人信息
     * </pre>
     *
     * <code>.wcf.UserInfo ui = 10;</code>
     * @return Whether the ui field is set.
     */
    @java.lang.Override
    public boolean hasUi() {
      return msgCase_ == 10;
    }
    /**
     * <pre>
     * 个人信息
     * </pre>
     *
     * <code>.wcf.UserInfo ui = 10;</code>
     * @return The ui.
     */
    @java.lang.Override
    public com.iamteer.Wcf.UserInfo getUi() {
      if (msgCase_ == 10) {
         return (com.iamteer.Wcf.UserInfo) msg_;
      }
      return com.iamteer.Wcf.UserInfo.getDefaultInstance();
    }
    /**
     * <pre>
     * 个人信息
     * </pre>
     *
     * <code>.wcf.UserInfo ui = 10;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.UserInfoOrBuilder getUiOrBuilder() {
      if (msgCase_ == 10) {
         return (com.iamteer.Wcf.UserInfo) msg_;
      }
      return com.iamteer.Wcf.UserInfo.getDefaultInstance();
    }

    public static final int OCR_FIELD_NUMBER = 11;
    /**
     * <pre>
     * OCR 结果
     * </pre>
     *
     * <code>.wcf.OcrMsg ocr = 11;</code>
     * @return Whether the ocr field is set.
     */
    @java.lang.Override
    public boolean hasOcr() {
      return msgCase_ == 11;
    }
    /**
     * <pre>
     * OCR 结果
     * </pre>
     *
     * <code>.wcf.OcrMsg ocr = 11;</code>
     * @return The ocr.
     */
    @java.lang.Override
    public com.iamteer.Wcf.OcrMsg getOcr() {
      if (msgCase_ == 11) {
         return (com.iamteer.Wcf.OcrMsg) msg_;
      }
      return com.iamteer.Wcf.OcrMsg.getDefaultInstance();
    }
    /**
     * <pre>
     * OCR 结果
     * </pre>
     *
     * <code>.wcf.OcrMsg ocr = 11;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.OcrMsgOrBuilder getOcrOrBuilder() {
      if (msgCase_ == 11) {
         return (com.iamteer.Wcf.OcrMsg) msg_;
      }
      return com.iamteer.Wcf.OcrMsg.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (func_ != com.iamteer.Wcf.Functions.FUNC_RESERVED.getNumber()) {
        output.writeEnum(1, func_);
      }
      if (msgCase_ == 2) {
        output.writeInt32(
            2, (int)((java.lang.Integer) msg_));
      }
      if (msgCase_ == 3) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, msg_);
      }
      if (msgCase_ == 4) {
        output.writeMessage(4, (com.iamteer.Wcf.WxMsg) msg_);
      }
      if (msgCase_ == 5) {
        output.writeMessage(5, (com.iamteer.Wcf.MsgTypes) msg_);
      }
      if (msgCase_ == 6) {
        output.writeMessage(6, (com.iamteer.Wcf.RpcContacts) msg_);
      }
      if (msgCase_ == 7) {
        output.writeMessage(7, (com.iamteer.Wcf.DbNames) msg_);
      }
      if (msgCase_ == 8) {
        output.writeMessage(8, (com.iamteer.Wcf.DbTables) msg_);
      }
      if (msgCase_ == 9) {
        output.writeMessage(9, (com.iamteer.Wcf.DbRows) msg_);
      }
      if (msgCase_ == 10) {
        output.writeMessage(10, (com.iamteer.Wcf.UserInfo) msg_);
      }
      if (msgCase_ == 11) {
        output.writeMessage(11, (com.iamteer.Wcf.OcrMsg) msg_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (func_ != com.iamteer.Wcf.Functions.FUNC_RESERVED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, func_);
      }
      if (msgCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              2, (int)((java.lang.Integer) msg_));
      }
      if (msgCase_ == 3) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, msg_);
      }
      if (msgCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (com.iamteer.Wcf.WxMsg) msg_);
      }
      if (msgCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (com.iamteer.Wcf.MsgTypes) msg_);
      }
      if (msgCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (com.iamteer.Wcf.RpcContacts) msg_);
      }
      if (msgCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (com.iamteer.Wcf.DbNames) msg_);
      }
      if (msgCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (com.iamteer.Wcf.DbTables) msg_);
      }
      if (msgCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, (com.iamteer.Wcf.DbRows) msg_);
      }
      if (msgCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (com.iamteer.Wcf.UserInfo) msg_);
      }
      if (msgCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (com.iamteer.Wcf.OcrMsg) msg_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.Response)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.Response other = (com.iamteer.Wcf.Response) obj;

      if (func_ != other.func_) return false;
      if (!getMsgCase().equals(other.getMsgCase())) return false;
      switch (msgCase_) {
        case 2:
          if (getStatus()
              != other.getStatus()) return false;
          break;
        case 3:
          if (!getStr()
              .equals(other.getStr())) return false;
          break;
        case 4:
          if (!getWxmsg()
              .equals(other.getWxmsg())) return false;
          break;
        case 5:
          if (!getTypes()
              .equals(other.getTypes())) return false;
          break;
        case 6:
          if (!getContacts()
              .equals(other.getContacts())) return false;
          break;
        case 7:
          if (!getDbs()
              .equals(other.getDbs())) return false;
          break;
        case 8:
          if (!getTables()
              .equals(other.getTables())) return false;
          break;
        case 9:
          if (!getRows()
              .equals(other.getRows())) return false;
          break;
        case 10:
          if (!getUi()
              .equals(other.getUi())) return false;
          break;
        case 11:
          if (!getOcr()
              .equals(other.getOcr())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + FUNC_FIELD_NUMBER;
      hash = (53 * hash) + func_;
      switch (msgCase_) {
        case 2:
          hash = (37 * hash) + STATUS_FIELD_NUMBER;
          hash = (53 * hash) + getStatus();
          break;
        case 3:
          hash = (37 * hash) + STR_FIELD_NUMBER;
          hash = (53 * hash) + getStr().hashCode();
          break;
        case 4:
          hash = (37 * hash) + WXMSG_FIELD_NUMBER;
          hash = (53 * hash) + getWxmsg().hashCode();
          break;
        case 5:
          hash = (37 * hash) + TYPES_FIELD_NUMBER;
          hash = (53 * hash) + getTypes().hashCode();
          break;
        case 6:
          hash = (37 * hash) + CONTACTS_FIELD_NUMBER;
          hash = (53 * hash) + getContacts().hashCode();
          break;
        case 7:
          hash = (37 * hash) + DBS_FIELD_NUMBER;
          hash = (53 * hash) + getDbs().hashCode();
          break;
        case 8:
          hash = (37 * hash) + TABLES_FIELD_NUMBER;
          hash = (53 * hash) + getTables().hashCode();
          break;
        case 9:
          hash = (37 * hash) + ROWS_FIELD_NUMBER;
          hash = (53 * hash) + getRows().hashCode();
          break;
        case 10:
          hash = (37 * hash) + UI_FIELD_NUMBER;
          hash = (53 * hash) + getUi().hashCode();
          break;
        case 11:
          hash = (37 * hash) + OCR_FIELD_NUMBER;
          hash = (53 * hash) + getOcr().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.Response prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.Response}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.Response)
        com.iamteer.Wcf.ResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_Response_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_Response_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.Response.class, com.iamteer.Wcf.Response.Builder.class);
      }

      // Construct using com.iamteer.Wcf.Response.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        msgCase_ = 0;
        msg_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_Response_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Response getDefaultInstanceForType() {
        return com.iamteer.Wcf.Response.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.Response build() {
        com.iamteer.Wcf.Response result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Response buildPartial() {
        com.iamteer.Wcf.Response result = new com.iamteer.Wcf.Response(this);
        result.func_ = func_;
        if (msgCase_ == 2) {
          result.msg_ = msg_;
        }
        if (msgCase_ == 3) {
          result.msg_ = msg_;
        }
        if (msgCase_ == 4) {
          if (wxmsgBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = wxmsgBuilder_.build();
          }
        }
        if (msgCase_ == 5) {
          if (typesBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = typesBuilder_.build();
          }
        }
        if (msgCase_ == 6) {
          if (contactsBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = contactsBuilder_.build();
          }
        }
        if (msgCase_ == 7) {
          if (dbsBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = dbsBuilder_.build();
          }
        }
        if (msgCase_ == 8) {
          if (tablesBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = tablesBuilder_.build();
          }
        }
        if (msgCase_ == 9) {
          if (rowsBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = rowsBuilder_.build();
          }
        }
        if (msgCase_ == 10) {
          if (uiBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = uiBuilder_.build();
          }
        }
        if (msgCase_ == 11) {
          if (ocrBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = ocrBuilder_.build();
          }
        }
        result.msgCase_ = msgCase_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.Response other) {
        if (other == com.iamteer.Wcf.Response.getDefaultInstance()) return this;
        if (other.func_ != 0) {
          setFuncValue(other.getFuncValue());
        }
        switch (other.getMsgCase()) {
          case STATUS: {
            setStatus(other.getStatus());
            break;
          }
          case STR: {
            msgCase_ = 3;
            msg_ = other.msg_;
            onChanged();
            break;
          }
          case WXMSG: {
            mergeWxmsg(other.getWxmsg());
            break;
          }
          case TYPES: {
            mergeTypes(other.getTypes());
            break;
          }
          case CONTACTS: {
            mergeContacts(other.getContacts());
            break;
          }
          case DBS: {
            mergeDbs(other.getDbs());
            break;
          }
          case TABLES: {
            mergeTables(other.getTables());
            break;
          }
          case ROWS: {
            mergeRows(other.getRows());
            break;
          }
          case UI: {
            mergeUi(other.getUi());
            break;
          }
          case OCR: {
            mergeOcr(other.getOcr());
            break;
          }
          case MSG_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.Response parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.Response) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int msgCase_ = 0;
      private java.lang.Object msg_;
      public MsgCase
          getMsgCase() {
        return MsgCase.forNumber(
            msgCase_);
      }

      public Builder clearMsg() {
        msgCase_ = 0;
        msg_ = null;
        onChanged();
        return this;
      }


      private int func_ = 0;
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @return The enum numeric value on the wire for func.
       */
      @java.lang.Override public int getFuncValue() {
        return func_;
      }
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @param value The enum numeric value on the wire for func to set.
       * @return This builder for chaining.
       */
      public Builder setFuncValue(int value) {
        
        func_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @return The func.
       */
      @java.lang.Override
      public com.iamteer.Wcf.Functions getFunc() {
        @SuppressWarnings("deprecation")
        com.iamteer.Wcf.Functions result = com.iamteer.Wcf.Functions.valueOf(func_);
        return result == null ? com.iamteer.Wcf.Functions.UNRECOGNIZED : result;
      }
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @param value The func to set.
       * @return This builder for chaining.
       */
      public Builder setFunc(com.iamteer.Wcf.Functions value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        func_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.wcf.Functions func = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFunc() {
        
        func_ = 0;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * Int 状态，通用
       * </pre>
       *
       * <code>int32 status = 2;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return msgCase_ == 2;
      }
      /**
       * <pre>
       * Int 状态，通用
       * </pre>
       *
       * <code>int32 status = 2;</code>
       * @return The status.
       */
      public int getStatus() {
        if (msgCase_ == 2) {
          return (java.lang.Integer) msg_;
        }
        return 0;
      }
      /**
       * <pre>
       * Int 状态，通用
       * </pre>
       *
       * <code>int32 status = 2;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(int value) {
        msgCase_ = 2;
        msg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Int 状态，通用
       * </pre>
       *
       * <code>int32 status = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        if (msgCase_ == 2) {
          msgCase_ = 0;
          msg_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @return Whether the str field is set.
       */
      @java.lang.Override
      public boolean hasStr() {
        return msgCase_ == 3;
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @return The str.
       */
      @java.lang.Override
      public java.lang.String getStr() {
        java.lang.Object ref = "";
        if (msgCase_ == 3) {
          ref = msg_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (msgCase_ == 3) {
            msg_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @return The bytes for str.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getStrBytes() {
        java.lang.Object ref = "";
        if (msgCase_ == 3) {
          ref = msg_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (msgCase_ == 3) {
            msg_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @param value The str to set.
       * @return This builder for chaining.
       */
      public Builder setStr(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  msgCase_ = 3;
        msg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStr() {
        if (msgCase_ == 3) {
          msgCase_ = 0;
          msg_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * 字符串
       * </pre>
       *
       * <code>string str = 3;</code>
       * @param value The bytes for str to set.
       * @return This builder for chaining.
       */
      public Builder setStrBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        msgCase_ = 3;
        msg_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.WxMsg, com.iamteer.Wcf.WxMsg.Builder, com.iamteer.Wcf.WxMsgOrBuilder> wxmsgBuilder_;
      /**
       * <pre>
       * 微信消息
       * </pre>
       *
       * <code>.wcf.WxMsg wxmsg = 4;</code>
       * @return Whether the wxmsg field is set.
       */
      @java.lang.Override
      public boolean hasWxmsg() {
        return msgCase_ == 4;
      }
      /**
       * <pre>
       * 微信消息
       * </pre>
       *
       * <code>.wcf.WxMsg wxmsg = 4;</code>
       * @return The wxmsg.
       */
      @java.lang.Override
      public com.iamteer.Wcf.WxMsg getWxmsg() {
        if (wxmsgBuilder_ == null) {
          if (msgCase_ == 4) {
            return (com.iamteer.Wcf.WxMsg) msg_;
          }
          return com.iamteer.Wcf.WxMsg.getDefaultInstance();
        } else {
          if (msgCase_ == 4) {
            return wxmsgBuilder_.getMessage();
          }
          return com.iamteer.Wcf.WxMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 微信消息
       * </pre>
       *
       * <code>.wcf.WxMsg wxmsg = 4;</code>
       */
      public Builder setWxmsg(com.iamteer.Wcf.WxMsg value) {
        if (wxmsgBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          wxmsgBuilder_.setMessage(value);
        }
        msgCase_ = 4;
        return this;
      }
      /**
       * <pre>
       * 微信消息
       * </pre>
       *
       * <code>.wcf.WxMsg wxmsg = 4;</code>
       */
      public Builder setWxmsg(
          com.iamteer.Wcf.WxMsg.Builder builderForValue) {
        if (wxmsgBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          wxmsgBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 4;
        return this;
      }
      /**
       * <pre>
       * 微信消息
       * </pre>
       *
       * <code>.wcf.WxMsg wxmsg = 4;</code>
       */
      public Builder mergeWxmsg(com.iamteer.Wcf.WxMsg value) {
        if (wxmsgBuilder_ == null) {
          if (msgCase_ == 4 &&
              msg_ != com.iamteer.Wcf.WxMsg.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.WxMsg.newBuilder((com.iamteer.Wcf.WxMsg) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 4) {
            wxmsgBuilder_.mergeFrom(value);
          }
          wxmsgBuilder_.setMessage(value);
        }
        msgCase_ = 4;
        return this;
      }
      /**
       * <pre>
       * 微信消息
       * </pre>
       *
       * <code>.wcf.WxMsg wxmsg = 4;</code>
       */
      public Builder clearWxmsg() {
        if (wxmsgBuilder_ == null) {
          if (msgCase_ == 4) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 4) {
            msgCase_ = 0;
            msg_ = null;
          }
          wxmsgBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 微信消息
       * </pre>
       *
       * <code>.wcf.WxMsg wxmsg = 4;</code>
       */
      public com.iamteer.Wcf.WxMsg.Builder getWxmsgBuilder() {
        return getWxmsgFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 微信消息
       * </pre>
       *
       * <code>.wcf.WxMsg wxmsg = 4;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.WxMsgOrBuilder getWxmsgOrBuilder() {
        if ((msgCase_ == 4) && (wxmsgBuilder_ != null)) {
          return wxmsgBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 4) {
            return (com.iamteer.Wcf.WxMsg) msg_;
          }
          return com.iamteer.Wcf.WxMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 微信消息
       * </pre>
       *
       * <code>.wcf.WxMsg wxmsg = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.WxMsg, com.iamteer.Wcf.WxMsg.Builder, com.iamteer.Wcf.WxMsgOrBuilder> 
          getWxmsgFieldBuilder() {
        if (wxmsgBuilder_ == null) {
          if (!(msgCase_ == 4)) {
            msg_ = com.iamteer.Wcf.WxMsg.getDefaultInstance();
          }
          wxmsgBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.WxMsg, com.iamteer.Wcf.WxMsg.Builder, com.iamteer.Wcf.WxMsgOrBuilder>(
                  (com.iamteer.Wcf.WxMsg) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 4;
        onChanged();;
        return wxmsgBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.MsgTypes, com.iamteer.Wcf.MsgTypes.Builder, com.iamteer.Wcf.MsgTypesOrBuilder> typesBuilder_;
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>.wcf.MsgTypes types = 5;</code>
       * @return Whether the types field is set.
       */
      @java.lang.Override
      public boolean hasTypes() {
        return msgCase_ == 5;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>.wcf.MsgTypes types = 5;</code>
       * @return The types.
       */
      @java.lang.Override
      public com.iamteer.Wcf.MsgTypes getTypes() {
        if (typesBuilder_ == null) {
          if (msgCase_ == 5) {
            return (com.iamteer.Wcf.MsgTypes) msg_;
          }
          return com.iamteer.Wcf.MsgTypes.getDefaultInstance();
        } else {
          if (msgCase_ == 5) {
            return typesBuilder_.getMessage();
          }
          return com.iamteer.Wcf.MsgTypes.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>.wcf.MsgTypes types = 5;</code>
       */
      public Builder setTypes(com.iamteer.Wcf.MsgTypes value) {
        if (typesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          typesBuilder_.setMessage(value);
        }
        msgCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>.wcf.MsgTypes types = 5;</code>
       */
      public Builder setTypes(
          com.iamteer.Wcf.MsgTypes.Builder builderForValue) {
        if (typesBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          typesBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>.wcf.MsgTypes types = 5;</code>
       */
      public Builder mergeTypes(com.iamteer.Wcf.MsgTypes value) {
        if (typesBuilder_ == null) {
          if (msgCase_ == 5 &&
              msg_ != com.iamteer.Wcf.MsgTypes.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.MsgTypes.newBuilder((com.iamteer.Wcf.MsgTypes) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 5) {
            typesBuilder_.mergeFrom(value);
          }
          typesBuilder_.setMessage(value);
        }
        msgCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>.wcf.MsgTypes types = 5;</code>
       */
      public Builder clearTypes() {
        if (typesBuilder_ == null) {
          if (msgCase_ == 5) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 5) {
            msgCase_ = 0;
            msg_ = null;
          }
          typesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>.wcf.MsgTypes types = 5;</code>
       */
      public com.iamteer.Wcf.MsgTypes.Builder getTypesBuilder() {
        return getTypesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>.wcf.MsgTypes types = 5;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.MsgTypesOrBuilder getTypesOrBuilder() {
        if ((msgCase_ == 5) && (typesBuilder_ != null)) {
          return typesBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 5) {
            return (com.iamteer.Wcf.MsgTypes) msg_;
          }
          return com.iamteer.Wcf.MsgTypes.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>.wcf.MsgTypes types = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.MsgTypes, com.iamteer.Wcf.MsgTypes.Builder, com.iamteer.Wcf.MsgTypesOrBuilder> 
          getTypesFieldBuilder() {
        if (typesBuilder_ == null) {
          if (!(msgCase_ == 5)) {
            msg_ = com.iamteer.Wcf.MsgTypes.getDefaultInstance();
          }
          typesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.MsgTypes, com.iamteer.Wcf.MsgTypes.Builder, com.iamteer.Wcf.MsgTypesOrBuilder>(
                  (com.iamteer.Wcf.MsgTypes) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 5;
        onChanged();;
        return typesBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.RpcContacts, com.iamteer.Wcf.RpcContacts.Builder, com.iamteer.Wcf.RpcContactsOrBuilder> contactsBuilder_;
      /**
       * <pre>
       * 联系人
       * </pre>
       *
       * <code>.wcf.RpcContacts contacts = 6;</code>
       * @return Whether the contacts field is set.
       */
      @java.lang.Override
      public boolean hasContacts() {
        return msgCase_ == 6;
      }
      /**
       * <pre>
       * 联系人
       * </pre>
       *
       * <code>.wcf.RpcContacts contacts = 6;</code>
       * @return The contacts.
       */
      @java.lang.Override
      public com.iamteer.Wcf.RpcContacts getContacts() {
        if (contactsBuilder_ == null) {
          if (msgCase_ == 6) {
            return (com.iamteer.Wcf.RpcContacts) msg_;
          }
          return com.iamteer.Wcf.RpcContacts.getDefaultInstance();
        } else {
          if (msgCase_ == 6) {
            return contactsBuilder_.getMessage();
          }
          return com.iamteer.Wcf.RpcContacts.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 联系人
       * </pre>
       *
       * <code>.wcf.RpcContacts contacts = 6;</code>
       */
      public Builder setContacts(com.iamteer.Wcf.RpcContacts value) {
        if (contactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          contactsBuilder_.setMessage(value);
        }
        msgCase_ = 6;
        return this;
      }
      /**
       * <pre>
       * 联系人
       * </pre>
       *
       * <code>.wcf.RpcContacts contacts = 6;</code>
       */
      public Builder setContacts(
          com.iamteer.Wcf.RpcContacts.Builder builderForValue) {
        if (contactsBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          contactsBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 6;
        return this;
      }
      /**
       * <pre>
       * 联系人
       * </pre>
       *
       * <code>.wcf.RpcContacts contacts = 6;</code>
       */
      public Builder mergeContacts(com.iamteer.Wcf.RpcContacts value) {
        if (contactsBuilder_ == null) {
          if (msgCase_ == 6 &&
              msg_ != com.iamteer.Wcf.RpcContacts.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.RpcContacts.newBuilder((com.iamteer.Wcf.RpcContacts) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 6) {
            contactsBuilder_.mergeFrom(value);
          }
          contactsBuilder_.setMessage(value);
        }
        msgCase_ = 6;
        return this;
      }
      /**
       * <pre>
       * 联系人
       * </pre>
       *
       * <code>.wcf.RpcContacts contacts = 6;</code>
       */
      public Builder clearContacts() {
        if (contactsBuilder_ == null) {
          if (msgCase_ == 6) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 6) {
            msgCase_ = 0;
            msg_ = null;
          }
          contactsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 联系人
       * </pre>
       *
       * <code>.wcf.RpcContacts contacts = 6;</code>
       */
      public com.iamteer.Wcf.RpcContacts.Builder getContactsBuilder() {
        return getContactsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 联系人
       * </pre>
       *
       * <code>.wcf.RpcContacts contacts = 6;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.RpcContactsOrBuilder getContactsOrBuilder() {
        if ((msgCase_ == 6) && (contactsBuilder_ != null)) {
          return contactsBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 6) {
            return (com.iamteer.Wcf.RpcContacts) msg_;
          }
          return com.iamteer.Wcf.RpcContacts.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 联系人
       * </pre>
       *
       * <code>.wcf.RpcContacts contacts = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.RpcContacts, com.iamteer.Wcf.RpcContacts.Builder, com.iamteer.Wcf.RpcContactsOrBuilder> 
          getContactsFieldBuilder() {
        if (contactsBuilder_ == null) {
          if (!(msgCase_ == 6)) {
            msg_ = com.iamteer.Wcf.RpcContacts.getDefaultInstance();
          }
          contactsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.RpcContacts, com.iamteer.Wcf.RpcContacts.Builder, com.iamteer.Wcf.RpcContactsOrBuilder>(
                  (com.iamteer.Wcf.RpcContacts) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 6;
        onChanged();;
        return contactsBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DbNames, com.iamteer.Wcf.DbNames.Builder, com.iamteer.Wcf.DbNamesOrBuilder> dbsBuilder_;
      /**
       * <pre>
       * 数据库列表
       * </pre>
       *
       * <code>.wcf.DbNames dbs = 7;</code>
       * @return Whether the dbs field is set.
       */
      @java.lang.Override
      public boolean hasDbs() {
        return msgCase_ == 7;
      }
      /**
       * <pre>
       * 数据库列表
       * </pre>
       *
       * <code>.wcf.DbNames dbs = 7;</code>
       * @return The dbs.
       */
      @java.lang.Override
      public com.iamteer.Wcf.DbNames getDbs() {
        if (dbsBuilder_ == null) {
          if (msgCase_ == 7) {
            return (com.iamteer.Wcf.DbNames) msg_;
          }
          return com.iamteer.Wcf.DbNames.getDefaultInstance();
        } else {
          if (msgCase_ == 7) {
            return dbsBuilder_.getMessage();
          }
          return com.iamteer.Wcf.DbNames.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 数据库列表
       * </pre>
       *
       * <code>.wcf.DbNames dbs = 7;</code>
       */
      public Builder setDbs(com.iamteer.Wcf.DbNames value) {
        if (dbsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          dbsBuilder_.setMessage(value);
        }
        msgCase_ = 7;
        return this;
      }
      /**
       * <pre>
       * 数据库列表
       * </pre>
       *
       * <code>.wcf.DbNames dbs = 7;</code>
       */
      public Builder setDbs(
          com.iamteer.Wcf.DbNames.Builder builderForValue) {
        if (dbsBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          dbsBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 7;
        return this;
      }
      /**
       * <pre>
       * 数据库列表
       * </pre>
       *
       * <code>.wcf.DbNames dbs = 7;</code>
       */
      public Builder mergeDbs(com.iamteer.Wcf.DbNames value) {
        if (dbsBuilder_ == null) {
          if (msgCase_ == 7 &&
              msg_ != com.iamteer.Wcf.DbNames.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.DbNames.newBuilder((com.iamteer.Wcf.DbNames) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 7) {
            dbsBuilder_.mergeFrom(value);
          }
          dbsBuilder_.setMessage(value);
        }
        msgCase_ = 7;
        return this;
      }
      /**
       * <pre>
       * 数据库列表
       * </pre>
       *
       * <code>.wcf.DbNames dbs = 7;</code>
       */
      public Builder clearDbs() {
        if (dbsBuilder_ == null) {
          if (msgCase_ == 7) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 7) {
            msgCase_ = 0;
            msg_ = null;
          }
          dbsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 数据库列表
       * </pre>
       *
       * <code>.wcf.DbNames dbs = 7;</code>
       */
      public com.iamteer.Wcf.DbNames.Builder getDbsBuilder() {
        return getDbsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 数据库列表
       * </pre>
       *
       * <code>.wcf.DbNames dbs = 7;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.DbNamesOrBuilder getDbsOrBuilder() {
        if ((msgCase_ == 7) && (dbsBuilder_ != null)) {
          return dbsBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 7) {
            return (com.iamteer.Wcf.DbNames) msg_;
          }
          return com.iamteer.Wcf.DbNames.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 数据库列表
       * </pre>
       *
       * <code>.wcf.DbNames dbs = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DbNames, com.iamteer.Wcf.DbNames.Builder, com.iamteer.Wcf.DbNamesOrBuilder> 
          getDbsFieldBuilder() {
        if (dbsBuilder_ == null) {
          if (!(msgCase_ == 7)) {
            msg_ = com.iamteer.Wcf.DbNames.getDefaultInstance();
          }
          dbsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.DbNames, com.iamteer.Wcf.DbNames.Builder, com.iamteer.Wcf.DbNamesOrBuilder>(
                  (com.iamteer.Wcf.DbNames) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 7;
        onChanged();;
        return dbsBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DbTables, com.iamteer.Wcf.DbTables.Builder, com.iamteer.Wcf.DbTablesOrBuilder> tablesBuilder_;
      /**
       * <pre>
       * 表列表
       * </pre>
       *
       * <code>.wcf.DbTables tables = 8;</code>
       * @return Whether the tables field is set.
       */
      @java.lang.Override
      public boolean hasTables() {
        return msgCase_ == 8;
      }
      /**
       * <pre>
       * 表列表
       * </pre>
       *
       * <code>.wcf.DbTables tables = 8;</code>
       * @return The tables.
       */
      @java.lang.Override
      public com.iamteer.Wcf.DbTables getTables() {
        if (tablesBuilder_ == null) {
          if (msgCase_ == 8) {
            return (com.iamteer.Wcf.DbTables) msg_;
          }
          return com.iamteer.Wcf.DbTables.getDefaultInstance();
        } else {
          if (msgCase_ == 8) {
            return tablesBuilder_.getMessage();
          }
          return com.iamteer.Wcf.DbTables.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 表列表
       * </pre>
       *
       * <code>.wcf.DbTables tables = 8;</code>
       */
      public Builder setTables(com.iamteer.Wcf.DbTables value) {
        if (tablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          tablesBuilder_.setMessage(value);
        }
        msgCase_ = 8;
        return this;
      }
      /**
       * <pre>
       * 表列表
       * </pre>
       *
       * <code>.wcf.DbTables tables = 8;</code>
       */
      public Builder setTables(
          com.iamteer.Wcf.DbTables.Builder builderForValue) {
        if (tablesBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          tablesBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 8;
        return this;
      }
      /**
       * <pre>
       * 表列表
       * </pre>
       *
       * <code>.wcf.DbTables tables = 8;</code>
       */
      public Builder mergeTables(com.iamteer.Wcf.DbTables value) {
        if (tablesBuilder_ == null) {
          if (msgCase_ == 8 &&
              msg_ != com.iamteer.Wcf.DbTables.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.DbTables.newBuilder((com.iamteer.Wcf.DbTables) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 8) {
            tablesBuilder_.mergeFrom(value);
          }
          tablesBuilder_.setMessage(value);
        }
        msgCase_ = 8;
        return this;
      }
      /**
       * <pre>
       * 表列表
       * </pre>
       *
       * <code>.wcf.DbTables tables = 8;</code>
       */
      public Builder clearTables() {
        if (tablesBuilder_ == null) {
          if (msgCase_ == 8) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 8) {
            msgCase_ = 0;
            msg_ = null;
          }
          tablesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 表列表
       * </pre>
       *
       * <code>.wcf.DbTables tables = 8;</code>
       */
      public com.iamteer.Wcf.DbTables.Builder getTablesBuilder() {
        return getTablesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 表列表
       * </pre>
       *
       * <code>.wcf.DbTables tables = 8;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.DbTablesOrBuilder getTablesOrBuilder() {
        if ((msgCase_ == 8) && (tablesBuilder_ != null)) {
          return tablesBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 8) {
            return (com.iamteer.Wcf.DbTables) msg_;
          }
          return com.iamteer.Wcf.DbTables.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 表列表
       * </pre>
       *
       * <code>.wcf.DbTables tables = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DbTables, com.iamteer.Wcf.DbTables.Builder, com.iamteer.Wcf.DbTablesOrBuilder> 
          getTablesFieldBuilder() {
        if (tablesBuilder_ == null) {
          if (!(msgCase_ == 8)) {
            msg_ = com.iamteer.Wcf.DbTables.getDefaultInstance();
          }
          tablesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.DbTables, com.iamteer.Wcf.DbTables.Builder, com.iamteer.Wcf.DbTablesOrBuilder>(
                  (com.iamteer.Wcf.DbTables) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 8;
        onChanged();;
        return tablesBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DbRows, com.iamteer.Wcf.DbRows.Builder, com.iamteer.Wcf.DbRowsOrBuilder> rowsBuilder_;
      /**
       * <pre>
       * 行列表
       * </pre>
       *
       * <code>.wcf.DbRows rows = 9;</code>
       * @return Whether the rows field is set.
       */
      @java.lang.Override
      public boolean hasRows() {
        return msgCase_ == 9;
      }
      /**
       * <pre>
       * 行列表
       * </pre>
       *
       * <code>.wcf.DbRows rows = 9;</code>
       * @return The rows.
       */
      @java.lang.Override
      public com.iamteer.Wcf.DbRows getRows() {
        if (rowsBuilder_ == null) {
          if (msgCase_ == 9) {
            return (com.iamteer.Wcf.DbRows) msg_;
          }
          return com.iamteer.Wcf.DbRows.getDefaultInstance();
        } else {
          if (msgCase_ == 9) {
            return rowsBuilder_.getMessage();
          }
          return com.iamteer.Wcf.DbRows.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 行列表
       * </pre>
       *
       * <code>.wcf.DbRows rows = 9;</code>
       */
      public Builder setRows(com.iamteer.Wcf.DbRows value) {
        if (rowsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          rowsBuilder_.setMessage(value);
        }
        msgCase_ = 9;
        return this;
      }
      /**
       * <pre>
       * 行列表
       * </pre>
       *
       * <code>.wcf.DbRows rows = 9;</code>
       */
      public Builder setRows(
          com.iamteer.Wcf.DbRows.Builder builderForValue) {
        if (rowsBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          rowsBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 9;
        return this;
      }
      /**
       * <pre>
       * 行列表
       * </pre>
       *
       * <code>.wcf.DbRows rows = 9;</code>
       */
      public Builder mergeRows(com.iamteer.Wcf.DbRows value) {
        if (rowsBuilder_ == null) {
          if (msgCase_ == 9 &&
              msg_ != com.iamteer.Wcf.DbRows.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.DbRows.newBuilder((com.iamteer.Wcf.DbRows) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 9) {
            rowsBuilder_.mergeFrom(value);
          }
          rowsBuilder_.setMessage(value);
        }
        msgCase_ = 9;
        return this;
      }
      /**
       * <pre>
       * 行列表
       * </pre>
       *
       * <code>.wcf.DbRows rows = 9;</code>
       */
      public Builder clearRows() {
        if (rowsBuilder_ == null) {
          if (msgCase_ == 9) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 9) {
            msgCase_ = 0;
            msg_ = null;
          }
          rowsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 行列表
       * </pre>
       *
       * <code>.wcf.DbRows rows = 9;</code>
       */
      public com.iamteer.Wcf.DbRows.Builder getRowsBuilder() {
        return getRowsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 行列表
       * </pre>
       *
       * <code>.wcf.DbRows rows = 9;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.DbRowsOrBuilder getRowsOrBuilder() {
        if ((msgCase_ == 9) && (rowsBuilder_ != null)) {
          return rowsBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 9) {
            return (com.iamteer.Wcf.DbRows) msg_;
          }
          return com.iamteer.Wcf.DbRows.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 行列表
       * </pre>
       *
       * <code>.wcf.DbRows rows = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.DbRows, com.iamteer.Wcf.DbRows.Builder, com.iamteer.Wcf.DbRowsOrBuilder> 
          getRowsFieldBuilder() {
        if (rowsBuilder_ == null) {
          if (!(msgCase_ == 9)) {
            msg_ = com.iamteer.Wcf.DbRows.getDefaultInstance();
          }
          rowsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.DbRows, com.iamteer.Wcf.DbRows.Builder, com.iamteer.Wcf.DbRowsOrBuilder>(
                  (com.iamteer.Wcf.DbRows) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 9;
        onChanged();;
        return rowsBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.UserInfo, com.iamteer.Wcf.UserInfo.Builder, com.iamteer.Wcf.UserInfoOrBuilder> uiBuilder_;
      /**
       * <pre>
       * 个人信息
       * </pre>
       *
       * <code>.wcf.UserInfo ui = 10;</code>
       * @return Whether the ui field is set.
       */
      @java.lang.Override
      public boolean hasUi() {
        return msgCase_ == 10;
      }
      /**
       * <pre>
       * 个人信息
       * </pre>
       *
       * <code>.wcf.UserInfo ui = 10;</code>
       * @return The ui.
       */
      @java.lang.Override
      public com.iamteer.Wcf.UserInfo getUi() {
        if (uiBuilder_ == null) {
          if (msgCase_ == 10) {
            return (com.iamteer.Wcf.UserInfo) msg_;
          }
          return com.iamteer.Wcf.UserInfo.getDefaultInstance();
        } else {
          if (msgCase_ == 10) {
            return uiBuilder_.getMessage();
          }
          return com.iamteer.Wcf.UserInfo.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 个人信息
       * </pre>
       *
       * <code>.wcf.UserInfo ui = 10;</code>
       */
      public Builder setUi(com.iamteer.Wcf.UserInfo value) {
        if (uiBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          uiBuilder_.setMessage(value);
        }
        msgCase_ = 10;
        return this;
      }
      /**
       * <pre>
       * 个人信息
       * </pre>
       *
       * <code>.wcf.UserInfo ui = 10;</code>
       */
      public Builder setUi(
          com.iamteer.Wcf.UserInfo.Builder builderForValue) {
        if (uiBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          uiBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 10;
        return this;
      }
      /**
       * <pre>
       * 个人信息
       * </pre>
       *
       * <code>.wcf.UserInfo ui = 10;</code>
       */
      public Builder mergeUi(com.iamteer.Wcf.UserInfo value) {
        if (uiBuilder_ == null) {
          if (msgCase_ == 10 &&
              msg_ != com.iamteer.Wcf.UserInfo.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.UserInfo.newBuilder((com.iamteer.Wcf.UserInfo) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 10) {
            uiBuilder_.mergeFrom(value);
          }
          uiBuilder_.setMessage(value);
        }
        msgCase_ = 10;
        return this;
      }
      /**
       * <pre>
       * 个人信息
       * </pre>
       *
       * <code>.wcf.UserInfo ui = 10;</code>
       */
      public Builder clearUi() {
        if (uiBuilder_ == null) {
          if (msgCase_ == 10) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 10) {
            msgCase_ = 0;
            msg_ = null;
          }
          uiBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 个人信息
       * </pre>
       *
       * <code>.wcf.UserInfo ui = 10;</code>
       */
      public com.iamteer.Wcf.UserInfo.Builder getUiBuilder() {
        return getUiFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 个人信息
       * </pre>
       *
       * <code>.wcf.UserInfo ui = 10;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.UserInfoOrBuilder getUiOrBuilder() {
        if ((msgCase_ == 10) && (uiBuilder_ != null)) {
          return uiBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 10) {
            return (com.iamteer.Wcf.UserInfo) msg_;
          }
          return com.iamteer.Wcf.UserInfo.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * 个人信息
       * </pre>
       *
       * <code>.wcf.UserInfo ui = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.UserInfo, com.iamteer.Wcf.UserInfo.Builder, com.iamteer.Wcf.UserInfoOrBuilder> 
          getUiFieldBuilder() {
        if (uiBuilder_ == null) {
          if (!(msgCase_ == 10)) {
            msg_ = com.iamteer.Wcf.UserInfo.getDefaultInstance();
          }
          uiBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.UserInfo, com.iamteer.Wcf.UserInfo.Builder, com.iamteer.Wcf.UserInfoOrBuilder>(
                  (com.iamteer.Wcf.UserInfo) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 10;
        onChanged();;
        return uiBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.OcrMsg, com.iamteer.Wcf.OcrMsg.Builder, com.iamteer.Wcf.OcrMsgOrBuilder> ocrBuilder_;
      /**
       * <pre>
       * OCR 结果
       * </pre>
       *
       * <code>.wcf.OcrMsg ocr = 11;</code>
       * @return Whether the ocr field is set.
       */
      @java.lang.Override
      public boolean hasOcr() {
        return msgCase_ == 11;
      }
      /**
       * <pre>
       * OCR 结果
       * </pre>
       *
       * <code>.wcf.OcrMsg ocr = 11;</code>
       * @return The ocr.
       */
      @java.lang.Override
      public com.iamteer.Wcf.OcrMsg getOcr() {
        if (ocrBuilder_ == null) {
          if (msgCase_ == 11) {
            return (com.iamteer.Wcf.OcrMsg) msg_;
          }
          return com.iamteer.Wcf.OcrMsg.getDefaultInstance();
        } else {
          if (msgCase_ == 11) {
            return ocrBuilder_.getMessage();
          }
          return com.iamteer.Wcf.OcrMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * OCR 结果
       * </pre>
       *
       * <code>.wcf.OcrMsg ocr = 11;</code>
       */
      public Builder setOcr(com.iamteer.Wcf.OcrMsg value) {
        if (ocrBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          ocrBuilder_.setMessage(value);
        }
        msgCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * OCR 结果
       * </pre>
       *
       * <code>.wcf.OcrMsg ocr = 11;</code>
       */
      public Builder setOcr(
          com.iamteer.Wcf.OcrMsg.Builder builderForValue) {
        if (ocrBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          ocrBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * OCR 结果
       * </pre>
       *
       * <code>.wcf.OcrMsg ocr = 11;</code>
       */
      public Builder mergeOcr(com.iamteer.Wcf.OcrMsg value) {
        if (ocrBuilder_ == null) {
          if (msgCase_ == 11 &&
              msg_ != com.iamteer.Wcf.OcrMsg.getDefaultInstance()) {
            msg_ = com.iamteer.Wcf.OcrMsg.newBuilder((com.iamteer.Wcf.OcrMsg) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 11) {
            ocrBuilder_.mergeFrom(value);
          }
          ocrBuilder_.setMessage(value);
        }
        msgCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * OCR 结果
       * </pre>
       *
       * <code>.wcf.OcrMsg ocr = 11;</code>
       */
      public Builder clearOcr() {
        if (ocrBuilder_ == null) {
          if (msgCase_ == 11) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 11) {
            msgCase_ = 0;
            msg_ = null;
          }
          ocrBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * OCR 结果
       * </pre>
       *
       * <code>.wcf.OcrMsg ocr = 11;</code>
       */
      public com.iamteer.Wcf.OcrMsg.Builder getOcrBuilder() {
        return getOcrFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * OCR 结果
       * </pre>
       *
       * <code>.wcf.OcrMsg ocr = 11;</code>
       */
      @java.lang.Override
      public com.iamteer.Wcf.OcrMsgOrBuilder getOcrOrBuilder() {
        if ((msgCase_ == 11) && (ocrBuilder_ != null)) {
          return ocrBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 11) {
            return (com.iamteer.Wcf.OcrMsg) msg_;
          }
          return com.iamteer.Wcf.OcrMsg.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * OCR 结果
       * </pre>
       *
       * <code>.wcf.OcrMsg ocr = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.iamteer.Wcf.OcrMsg, com.iamteer.Wcf.OcrMsg.Builder, com.iamteer.Wcf.OcrMsgOrBuilder> 
          getOcrFieldBuilder() {
        if (ocrBuilder_ == null) {
          if (!(msgCase_ == 11)) {
            msg_ = com.iamteer.Wcf.OcrMsg.getDefaultInstance();
          }
          ocrBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.iamteer.Wcf.OcrMsg, com.iamteer.Wcf.OcrMsg.Builder, com.iamteer.Wcf.OcrMsgOrBuilder>(
                  (com.iamteer.Wcf.OcrMsg) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 11;
        onChanged();;
        return ocrBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.Response)
    }

    // @@protoc_insertion_point(class_scope:wcf.Response)
    private static final com.iamteer.Wcf.Response DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.Response();
    }

    public static com.iamteer.Wcf.Response getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.Response getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EmptyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.Empty)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code wcf.Empty}
   */
  public static final class Empty extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.Empty)
      EmptyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Empty.newBuilder() to construct.
    private Empty(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Empty() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Empty(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_Empty_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_Empty_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.Empty.class, com.iamteer.Wcf.Empty.Builder.class);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

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

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.Empty)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.Empty other = (com.iamteer.Wcf.Empty) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.Empty prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.Empty}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.Empty)
        com.iamteer.Wcf.EmptyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_Empty_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_Empty_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.Empty.class, com.iamteer.Wcf.Empty.Builder.class);
      }

      // Construct using com.iamteer.Wcf.Empty.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_Empty_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Empty getDefaultInstanceForType() {
        return com.iamteer.Wcf.Empty.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.Empty build() {
        com.iamteer.Wcf.Empty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Empty buildPartial() {
        com.iamteer.Wcf.Empty result = new com.iamteer.Wcf.Empty(this);
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.Empty other) {
        if (other == com.iamteer.Wcf.Empty.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.Empty parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.Empty) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.Empty)
    }

    // @@protoc_insertion_point(class_scope:wcf.Empty)
    private static final com.iamteer.Wcf.Empty DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.Empty();
    }

    public static com.iamteer.Wcf.Empty getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.Empty getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WxMsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.WxMsg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 是否自己发送的
     * </pre>
     *
     * <code>bool is_self = 1;</code>
     * @return The isSelf.
     */
    boolean getIsSelf();

    /**
     * <pre>
     * 是否群消息
     * </pre>
     *
     * <code>bool is_group = 2;</code>
     * @return The isGroup.
     */
    boolean getIsGroup();

    /**
     * <pre>
     * 消息 id
     * </pre>
     *
     * <code>uint64 id = 3 [jstype = JS_STRING];</code>
     * @return The id.
     */
    long getId();

    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>uint32 type = 4;</code>
     * @return The type.
     */
    int getType();

    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>uint32 ts = 5;</code>
     * @return The ts.
     */
    int getTs();

    /**
     * <pre>
     * 群 id（如果是群消息的话）
     * </pre>
     *
     * <code>string roomid = 6;</code>
     * @return The roomid.
     */
    java.lang.String getRoomid();
    /**
     * <pre>
     * 群 id（如果是群消息的话）
     * </pre>
     *
     * <code>string roomid = 6;</code>
     * @return The bytes for roomid.
     */
    com.google.protobuf.ByteString
        getRoomidBytes();

    /**
     * <pre>
     * 消息内容
     * </pre>
     *
     * <code>string content = 7;</code>
     * @return The content.
     */
    java.lang.String getContent();
    /**
     * <pre>
     * 消息内容
     * </pre>
     *
     * <code>string content = 7;</code>
     * @return The bytes for content.
     */
    com.google.protobuf.ByteString
        getContentBytes();

    /**
     * <pre>
     * 消息发送者
     * </pre>
     *
     * <code>string sender = 8;</code>
     * @return The sender.
     */
    java.lang.String getSender();
    /**
     * <pre>
     * 消息发送者
     * </pre>
     *
     * <code>string sender = 8;</code>
     * @return The bytes for sender.
     */
    com.google.protobuf.ByteString
        getSenderBytes();

    /**
     * <pre>
     * Sign
     * </pre>
     *
     * <code>string sign = 9;</code>
     * @return The sign.
     */
    java.lang.String getSign();
    /**
     * <pre>
     * Sign
     * </pre>
     *
     * <code>string sign = 9;</code>
     * @return The bytes for sign.
     */
    com.google.protobuf.ByteString
        getSignBytes();

    /**
     * <pre>
     * 缩略图
     * </pre>
     *
     * <code>string thumb = 10;</code>
     * @return The thumb.
     */
    java.lang.String getThumb();
    /**
     * <pre>
     * 缩略图
     * </pre>
     *
     * <code>string thumb = 10;</code>
     * @return The bytes for thumb.
     */
    com.google.protobuf.ByteString
        getThumbBytes();

    /**
     * <pre>
     * 附加内容
     * </pre>
     *
     * <code>string extra = 11;</code>
     * @return The extra.
     */
    java.lang.String getExtra();
    /**
     * <pre>
     * 附加内容
     * </pre>
     *
     * <code>string extra = 11;</code>
     * @return The bytes for extra.
     */
    com.google.protobuf.ByteString
        getExtraBytes();

    /**
     * <pre>
     * 消息 xml
     * </pre>
     *
     * <code>string xml = 12;</code>
     * @return The xml.
     */
    java.lang.String getXml();
    /**
     * <pre>
     * 消息 xml
     * </pre>
     *
     * <code>string xml = 12;</code>
     * @return The bytes for xml.
     */
    com.google.protobuf.ByteString
        getXmlBytes();
  }
  /**
   * Protobuf type {@code wcf.WxMsg}
   */
  public static final class WxMsg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.WxMsg)
      WxMsgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use WxMsg.newBuilder() to construct.
    private WxMsg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private WxMsg() {
      roomid_ = "";
      content_ = "";
      sender_ = "";
      sign_ = "";
      thumb_ = "";
      extra_ = "";
      xml_ = "";
    }

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

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

              isSelf_ = input.readBool();
              break;
            }
            case 16: {

              isGroup_ = input.readBool();
              break;
            }
            case 24: {

              id_ = input.readUInt64();
              break;
            }
            case 32: {

              type_ = input.readUInt32();
              break;
            }
            case 40: {

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

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

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

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

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

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

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

              xml_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_WxMsg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_WxMsg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.WxMsg.class, com.iamteer.Wcf.WxMsg.Builder.class);
    }

    public static final int IS_SELF_FIELD_NUMBER = 1;
    private boolean isSelf_;
    /**
     * <pre>
     * 是否自己发送的
     * </pre>
     *
     * <code>bool is_self = 1;</code>
     * @return The isSelf.
     */
    @java.lang.Override
    public boolean getIsSelf() {
      return isSelf_;
    }

    public static final int IS_GROUP_FIELD_NUMBER = 2;
    private boolean isGroup_;
    /**
     * <pre>
     * 是否群消息
     * </pre>
     *
     * <code>bool is_group = 2;</code>
     * @return The isGroup.
     */
    @java.lang.Override
    public boolean getIsGroup() {
      return isGroup_;
    }

    public static final int ID_FIELD_NUMBER = 3;
    private long id_;
    /**
     * <pre>
     * 消息 id
     * </pre>
     *
     * <code>uint64 id = 3 [jstype = JS_STRING];</code>
     * @return The id.
     */
    @java.lang.Override
    public long getId() {
      return id_;
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    private int type_;
    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>uint32 type = 4;</code>
     * @return The type.
     */
    @java.lang.Override
    public int getType() {
      return type_;
    }

    public static final int TS_FIELD_NUMBER = 5;
    private int ts_;
    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>uint32 ts = 5;</code>
     * @return The ts.
     */
    @java.lang.Override
    public int getTs() {
      return ts_;
    }

    public static final int ROOMID_FIELD_NUMBER = 6;
    private volatile java.lang.Object roomid_;
    /**
     * <pre>
     * 群 id（如果是群消息的话）
     * </pre>
     *
     * <code>string roomid = 6;</code>
     * @return The roomid.
     */
    @java.lang.Override
    public java.lang.String getRoomid() {
      java.lang.Object ref = roomid_;
      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();
        roomid_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 群 id（如果是群消息的话）
     * </pre>
     *
     * <code>string roomid = 6;</code>
     * @return The bytes for roomid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRoomidBytes() {
      java.lang.Object ref = roomid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        roomid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTENT_FIELD_NUMBER = 7;
    private volatile java.lang.Object content_;
    /**
     * <pre>
     * 消息内容
     * </pre>
     *
     * <code>string content = 7;</code>
     * @return The content.
     */
    @java.lang.Override
    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();
        content_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息内容
     * </pre>
     *
     * <code>string content = 7;</code>
     * @return The bytes for content.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int SENDER_FIELD_NUMBER = 8;
    private volatile java.lang.Object sender_;
    /**
     * <pre>
     * 消息发送者
     * </pre>
     *
     * <code>string sender = 8;</code>
     * @return The sender.
     */
    @java.lang.Override
    public java.lang.String getSender() {
      java.lang.Object ref = sender_;
      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();
        sender_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息发送者
     * </pre>
     *
     * <code>string sender = 8;</code>
     * @return The bytes for sender.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSenderBytes() {
      java.lang.Object ref = sender_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sender_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SIGN_FIELD_NUMBER = 9;
    private volatile java.lang.Object sign_;
    /**
     * <pre>
     * Sign
     * </pre>
     *
     * <code>string sign = 9;</code>
     * @return The sign.
     */
    @java.lang.Override
    public java.lang.String getSign() {
      java.lang.Object ref = sign_;
      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();
        sign_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Sign
     * </pre>
     *
     * <code>string sign = 9;</code>
     * @return The bytes for sign.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSignBytes() {
      java.lang.Object ref = sign_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sign_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int THUMB_FIELD_NUMBER = 10;
    private volatile java.lang.Object thumb_;
    /**
     * <pre>
     * 缩略图
     * </pre>
     *
     * <code>string thumb = 10;</code>
     * @return The thumb.
     */
    @java.lang.Override
    public java.lang.String getThumb() {
      java.lang.Object ref = thumb_;
      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();
        thumb_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 缩略图
     * </pre>
     *
     * <code>string thumb = 10;</code>
     * @return The bytes for thumb.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getThumbBytes() {
      java.lang.Object ref = thumb_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        thumb_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTRA_FIELD_NUMBER = 11;
    private volatile java.lang.Object extra_;
    /**
     * <pre>
     * 附加内容
     * </pre>
     *
     * <code>string extra = 11;</code>
     * @return The extra.
     */
    @java.lang.Override
    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();
        extra_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 附加内容
     * </pre>
     *
     * <code>string extra = 11;</code>
     * @return The bytes for extra.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int XML_FIELD_NUMBER = 12;
    private volatile java.lang.Object xml_;
    /**
     * <pre>
     * 消息 xml
     * </pre>
     *
     * <code>string xml = 12;</code>
     * @return The xml.
     */
    @java.lang.Override
    public java.lang.String getXml() {
      java.lang.Object ref = xml_;
      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();
        xml_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息 xml
     * </pre>
     *
     * <code>string xml = 12;</code>
     * @return The bytes for xml.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getXmlBytes() {
      java.lang.Object ref = xml_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xml_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (isSelf_ != false) {
        output.writeBool(1, isSelf_);
      }
      if (isGroup_ != false) {
        output.writeBool(2, isGroup_);
      }
      if (id_ != 0L) {
        output.writeUInt64(3, id_);
      }
      if (type_ != 0) {
        output.writeUInt32(4, type_);
      }
      if (ts_ != 0) {
        output.writeUInt32(5, ts_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(roomid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, roomid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(content_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, content_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sender_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, sender_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sign_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, sign_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(thumb_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, thumb_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(extra_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, extra_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(xml_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, xml_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (isSelf_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, isSelf_);
      }
      if (isGroup_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, isGroup_);
      }
      if (id_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, id_);
      }
      if (type_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, type_);
      }
      if (ts_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, ts_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(roomid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, roomid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(content_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, content_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sender_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, sender_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sign_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, sign_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(thumb_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, thumb_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(extra_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, extra_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(xml_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, xml_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.WxMsg)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.WxMsg other = (com.iamteer.Wcf.WxMsg) obj;

      if (getIsSelf()
          != other.getIsSelf()) return false;
      if (getIsGroup()
          != other.getIsGroup()) return false;
      if (getId()
          != other.getId()) return false;
      if (getType()
          != other.getType()) return false;
      if (getTs()
          != other.getTs()) return false;
      if (!getRoomid()
          .equals(other.getRoomid())) return false;
      if (!getContent()
          .equals(other.getContent())) return false;
      if (!getSender()
          .equals(other.getSender())) return false;
      if (!getSign()
          .equals(other.getSign())) return false;
      if (!getThumb()
          .equals(other.getThumb())) return false;
      if (!getExtra()
          .equals(other.getExtra())) return false;
      if (!getXml()
          .equals(other.getXml())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + IS_SELF_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsSelf());
      hash = (37 * hash) + IS_GROUP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsGroup());
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getId());
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType();
      hash = (37 * hash) + TS_FIELD_NUMBER;
      hash = (53 * hash) + getTs();
      hash = (37 * hash) + ROOMID_FIELD_NUMBER;
      hash = (53 * hash) + getRoomid().hashCode();
      hash = (37 * hash) + CONTENT_FIELD_NUMBER;
      hash = (53 * hash) + getContent().hashCode();
      hash = (37 * hash) + SENDER_FIELD_NUMBER;
      hash = (53 * hash) + getSender().hashCode();
      hash = (37 * hash) + SIGN_FIELD_NUMBER;
      hash = (53 * hash) + getSign().hashCode();
      hash = (37 * hash) + THUMB_FIELD_NUMBER;
      hash = (53 * hash) + getThumb().hashCode();
      hash = (37 * hash) + EXTRA_FIELD_NUMBER;
      hash = (53 * hash) + getExtra().hashCode();
      hash = (37 * hash) + XML_FIELD_NUMBER;
      hash = (53 * hash) + getXml().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.WxMsg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.WxMsg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.WxMsg)
        com.iamteer.Wcf.WxMsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_WxMsg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_WxMsg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.WxMsg.class, com.iamteer.Wcf.WxMsg.Builder.class);
      }

      // Construct using com.iamteer.Wcf.WxMsg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        isGroup_ = false;

        id_ = 0L;

        type_ = 0;

        ts_ = 0;

        roomid_ = "";

        content_ = "";

        sender_ = "";

        sign_ = "";

        thumb_ = "";

        extra_ = "";

        xml_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_WxMsg_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.WxMsg getDefaultInstanceForType() {
        return com.iamteer.Wcf.WxMsg.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.WxMsg build() {
        com.iamteer.Wcf.WxMsg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.WxMsg buildPartial() {
        com.iamteer.Wcf.WxMsg result = new com.iamteer.Wcf.WxMsg(this);
        result.isSelf_ = isSelf_;
        result.isGroup_ = isGroup_;
        result.id_ = id_;
        result.type_ = type_;
        result.ts_ = ts_;
        result.roomid_ = roomid_;
        result.content_ = content_;
        result.sender_ = sender_;
        result.sign_ = sign_;
        result.thumb_ = thumb_;
        result.extra_ = extra_;
        result.xml_ = xml_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.WxMsg other) {
        if (other == com.iamteer.Wcf.WxMsg.getDefaultInstance()) return this;
        if (other.getIsSelf() != false) {
          setIsSelf(other.getIsSelf());
        }
        if (other.getIsGroup() != false) {
          setIsGroup(other.getIsGroup());
        }
        if (other.getId() != 0L) {
          setId(other.getId());
        }
        if (other.getType() != 0) {
          setType(other.getType());
        }
        if (other.getTs() != 0) {
          setTs(other.getTs());
        }
        if (!other.getRoomid().isEmpty()) {
          roomid_ = other.roomid_;
          onChanged();
        }
        if (!other.getContent().isEmpty()) {
          content_ = other.content_;
          onChanged();
        }
        if (!other.getSender().isEmpty()) {
          sender_ = other.sender_;
          onChanged();
        }
        if (!other.getSign().isEmpty()) {
          sign_ = other.sign_;
          onChanged();
        }
        if (!other.getThumb().isEmpty()) {
          thumb_ = other.thumb_;
          onChanged();
        }
        if (!other.getExtra().isEmpty()) {
          extra_ = other.extra_;
          onChanged();
        }
        if (!other.getXml().isEmpty()) {
          xml_ = other.xml_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.WxMsg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.WxMsg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean isSelf_ ;
      /**
       * <pre>
       * 是否自己发送的
       * </pre>
       *
       * <code>bool is_self = 1;</code>
       * @return The isSelf.
       */
      @java.lang.Override
      public boolean getIsSelf() {
        return isSelf_;
      }
      /**
       * <pre>
       * 是否自己发送的
       * </pre>
       *
       * <code>bool is_self = 1;</code>
       * @param value The isSelf to set.
       * @return This builder for chaining.
       */
      public Builder setIsSelf(boolean value) {
        
        isSelf_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 是否自己发送的
       * </pre>
       *
       * <code>bool is_self = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSelf() {
        
        isSelf_ = false;
        onChanged();
        return this;
      }

      private boolean isGroup_ ;
      /**
       * <pre>
       * 是否群消息
       * </pre>
       *
       * <code>bool is_group = 2;</code>
       * @return The isGroup.
       */
      @java.lang.Override
      public boolean getIsGroup() {
        return isGroup_;
      }
      /**
       * <pre>
       * 是否群消息
       * </pre>
       *
       * <code>bool is_group = 2;</code>
       * @param value The isGroup to set.
       * @return This builder for chaining.
       */
      public Builder setIsGroup(boolean value) {
        
        isGroup_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 是否群消息
       * </pre>
       *
       * <code>bool is_group = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsGroup() {
        
        isGroup_ = false;
        onChanged();
        return this;
      }

      private long id_ ;
      /**
       * <pre>
       * 消息 id
       * </pre>
       *
       * <code>uint64 id = 3 [jstype = JS_STRING];</code>
       * @return The id.
       */
      @java.lang.Override
      public long getId() {
        return id_;
      }
      /**
       * <pre>
       * 消息 id
       * </pre>
       *
       * <code>uint64 id = 3 [jstype = JS_STRING];</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(long value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息 id
       * </pre>
       *
       * <code>uint64 id = 3 [jstype = JS_STRING];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0L;
        onChanged();
        return this;
      }

      private int type_ ;
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>uint32 type = 4;</code>
       * @return The type.
       */
      @java.lang.Override
      public int getType() {
        return type_;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>uint32 type = 4;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(int value) {
        
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>uint32 type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        
        type_ = 0;
        onChanged();
        return this;
      }

      private int ts_ ;
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>uint32 ts = 5;</code>
       * @return The ts.
       */
      @java.lang.Override
      public int getTs() {
        return ts_;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>uint32 ts = 5;</code>
       * @param value The ts to set.
       * @return This builder for chaining.
       */
      public Builder setTs(int value) {
        
        ts_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>uint32 ts = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTs() {
        
        ts_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object roomid_ = "";
      /**
       * <pre>
       * 群 id（如果是群消息的话）
       * </pre>
       *
       * <code>string roomid = 6;</code>
       * @return The roomid.
       */
      public java.lang.String getRoomid() {
        java.lang.Object ref = roomid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          roomid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 群 id（如果是群消息的话）
       * </pre>
       *
       * <code>string roomid = 6;</code>
       * @return The bytes for roomid.
       */
      public com.google.protobuf.ByteString
          getRoomidBytes() {
        java.lang.Object ref = roomid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          roomid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 群 id（如果是群消息的话）
       * </pre>
       *
       * <code>string roomid = 6;</code>
       * @param value The roomid to set.
       * @return This builder for chaining.
       */
      public Builder setRoomid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        roomid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 群 id（如果是群消息的话）
       * </pre>
       *
       * <code>string roomid = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearRoomid() {
        
        roomid_ = getDefaultInstance().getRoomid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 群 id（如果是群消息的话）
       * </pre>
       *
       * <code>string roomid = 6;</code>
       * @param value The bytes for roomid to set.
       * @return This builder for chaining.
       */
      public Builder setRoomidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        roomid_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object content_ = "";
      /**
       * <pre>
       * 消息内容
       * </pre>
       *
       * <code>string content = 7;</code>
       * @return The content.
       */
      public java.lang.String getContent() {
        java.lang.Object ref = content_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          content_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 消息内容
       * </pre>
       *
       * <code>string content = 7;</code>
       * @return The bytes for content.
       */
      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;
        }
      }
      /**
       * <pre>
       * 消息内容
       * </pre>
       *
       * <code>string content = 7;</code>
       * @param value The content to set.
       * @return This builder for chaining.
       */
      public Builder setContent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        content_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息内容
       * </pre>
       *
       * <code>string content = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearContent() {
        
        content_ = getDefaultInstance().getContent();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息内容
       * </pre>
       *
       * <code>string content = 7;</code>
       * @param value The bytes for content to set.
       * @return This builder for chaining.
       */
      public Builder setContentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        content_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sender_ = "";
      /**
       * <pre>
       * 消息发送者
       * </pre>
       *
       * <code>string sender = 8;</code>
       * @return The sender.
       */
      public java.lang.String getSender() {
        java.lang.Object ref = sender_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sender_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 消息发送者
       * </pre>
       *
       * <code>string sender = 8;</code>
       * @return The bytes for sender.
       */
      public com.google.protobuf.ByteString
          getSenderBytes() {
        java.lang.Object ref = sender_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sender_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息发送者
       * </pre>
       *
       * <code>string sender = 8;</code>
       * @param value The sender to set.
       * @return This builder for chaining.
       */
      public Builder setSender(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sender_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息发送者
       * </pre>
       *
       * <code>string sender = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearSender() {
        
        sender_ = getDefaultInstance().getSender();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息发送者
       * </pre>
       *
       * <code>string sender = 8;</code>
       * @param value The bytes for sender to set.
       * @return This builder for chaining.
       */
      public Builder setSenderBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sender_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sign_ = "";
      /**
       * <pre>
       * Sign
       * </pre>
       *
       * <code>string sign = 9;</code>
       * @return The sign.
       */
      public java.lang.String getSign() {
        java.lang.Object ref = sign_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sign_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Sign
       * </pre>
       *
       * <code>string sign = 9;</code>
       * @return The bytes for sign.
       */
      public com.google.protobuf.ByteString
          getSignBytes() {
        java.lang.Object ref = sign_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sign_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Sign
       * </pre>
       *
       * <code>string sign = 9;</code>
       * @param value The sign to set.
       * @return This builder for chaining.
       */
      public Builder setSign(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sign_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Sign
       * </pre>
       *
       * <code>string sign = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearSign() {
        
        sign_ = getDefaultInstance().getSign();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Sign
       * </pre>
       *
       * <code>string sign = 9;</code>
       * @param value The bytes for sign to set.
       * @return This builder for chaining.
       */
      public Builder setSignBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sign_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object thumb_ = "";
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumb = 10;</code>
       * @return The thumb.
       */
      public java.lang.String getThumb() {
        java.lang.Object ref = thumb_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          thumb_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumb = 10;</code>
       * @return The bytes for thumb.
       */
      public com.google.protobuf.ByteString
          getThumbBytes() {
        java.lang.Object ref = thumb_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          thumb_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumb = 10;</code>
       * @param value The thumb to set.
       * @return This builder for chaining.
       */
      public Builder setThumb(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        thumb_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumb = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearThumb() {
        
        thumb_ = getDefaultInstance().getThumb();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumb = 10;</code>
       * @param value The bytes for thumb to set.
       * @return This builder for chaining.
       */
      public Builder setThumbBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        thumb_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object extra_ = "";
      /**
       * <pre>
       * 附加内容
       * </pre>
       *
       * <code>string extra = 11;</code>
       * @return The extra.
       */
      public java.lang.String getExtra() {
        java.lang.Object ref = extra_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          extra_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 附加内容
       * </pre>
       *
       * <code>string extra = 11;</code>
       * @return The bytes for extra.
       */
      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;
        }
      }
      /**
       * <pre>
       * 附加内容
       * </pre>
       *
       * <code>string extra = 11;</code>
       * @param value The extra to set.
       * @return This builder for chaining.
       */
      public Builder setExtra(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        extra_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 附加内容
       * </pre>
       *
       * <code>string extra = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearExtra() {
        
        extra_ = getDefaultInstance().getExtra();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 附加内容
       * </pre>
       *
       * <code>string extra = 11;</code>
       * @param value The bytes for extra to set.
       * @return This builder for chaining.
       */
      public Builder setExtraBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        extra_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object xml_ = "";
      /**
       * <pre>
       * 消息 xml
       * </pre>
       *
       * <code>string xml = 12;</code>
       * @return The xml.
       */
      public java.lang.String getXml() {
        java.lang.Object ref = xml_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xml_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 消息 xml
       * </pre>
       *
       * <code>string xml = 12;</code>
       * @return The bytes for xml.
       */
      public com.google.protobuf.ByteString
          getXmlBytes() {
        java.lang.Object ref = xml_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xml_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息 xml
       * </pre>
       *
       * <code>string xml = 12;</code>
       * @param value The xml to set.
       * @return This builder for chaining.
       */
      public Builder setXml(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xml_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息 xml
       * </pre>
       *
       * <code>string xml = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearXml() {
        
        xml_ = getDefaultInstance().getXml();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息 xml
       * </pre>
       *
       * <code>string xml = 12;</code>
       * @param value The bytes for xml to set.
       * @return This builder for chaining.
       */
      public Builder setXmlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xml_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.WxMsg)
    }

    // @@protoc_insertion_point(class_scope:wcf.WxMsg)
    private static final com.iamteer.Wcf.WxMsg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.WxMsg();
    }

    public static com.iamteer.Wcf.WxMsg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.WxMsg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TextMsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.TextMsg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 要发送的消息内容
     * </pre>
     *
     * <code>string msg = 1;</code>
     * @return The msg.
     */
    java.lang.String getMsg();
    /**
     * <pre>
     * 要发送的消息内容
     * </pre>
     *
     * <code>string msg = 1;</code>
     * @return The bytes for msg.
     */
    com.google.protobuf.ByteString
        getMsgBytes();

    /**
     * <pre>
     * 消息接收人，当为群时可&#64;
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The receiver.
     */
    java.lang.String getReceiver();
    /**
     * <pre>
     * 消息接收人，当为群时可&#64;
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The bytes for receiver.
     */
    com.google.protobuf.ByteString
        getReceiverBytes();

    /**
     * <pre>
     * 要&#64;的人列表，逗号分隔
     * </pre>
     *
     * <code>string aters = 3;</code>
     * @return The aters.
     */
    java.lang.String getAters();
    /**
     * <pre>
     * 要&#64;的人列表，逗号分隔
     * </pre>
     *
     * <code>string aters = 3;</code>
     * @return The bytes for aters.
     */
    com.google.protobuf.ByteString
        getAtersBytes();
  }
  /**
   * Protobuf type {@code wcf.TextMsg}
   */
  public static final class TextMsg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.TextMsg)
      TextMsgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TextMsg.newBuilder() to construct.
    private TextMsg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TextMsg() {
      msg_ = "";
      receiver_ = "";
      aters_ = "";
    }

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

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

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

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

              aters_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_TextMsg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_TextMsg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.TextMsg.class, com.iamteer.Wcf.TextMsg.Builder.class);
    }

    public static final int MSG_FIELD_NUMBER = 1;
    private volatile java.lang.Object msg_;
    /**
     * <pre>
     * 要发送的消息内容
     * </pre>
     *
     * <code>string msg = 1;</code>
     * @return The msg.
     */
    @java.lang.Override
    public java.lang.String getMsg() {
      java.lang.Object ref = msg_;
      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();
        msg_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 要发送的消息内容
     * </pre>
     *
     * <code>string msg = 1;</code>
     * @return The bytes for msg.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMsgBytes() {
      java.lang.Object ref = msg_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msg_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RECEIVER_FIELD_NUMBER = 2;
    private volatile java.lang.Object receiver_;
    /**
     * <pre>
     * 消息接收人，当为群时可&#64;
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The receiver.
     */
    @java.lang.Override
    public java.lang.String getReceiver() {
      java.lang.Object ref = receiver_;
      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();
        receiver_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息接收人，当为群时可&#64;
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The bytes for receiver.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReceiverBytes() {
      java.lang.Object ref = receiver_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        receiver_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ATERS_FIELD_NUMBER = 3;
    private volatile java.lang.Object aters_;
    /**
     * <pre>
     * 要&#64;的人列表，逗号分隔
     * </pre>
     *
     * <code>string aters = 3;</code>
     * @return The aters.
     */
    @java.lang.Override
    public java.lang.String getAters() {
      java.lang.Object ref = aters_;
      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();
        aters_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 要&#64;的人列表，逗号分隔
     * </pre>
     *
     * <code>string aters = 3;</code>
     * @return The bytes for aters.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAtersBytes() {
      java.lang.Object ref = aters_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        aters_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msg_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msg_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, receiver_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(aters_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, aters_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msg_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msg_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, receiver_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(aters_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, aters_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.TextMsg)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.TextMsg other = (com.iamteer.Wcf.TextMsg) obj;

      if (!getMsg()
          .equals(other.getMsg())) return false;
      if (!getReceiver()
          .equals(other.getReceiver())) return false;
      if (!getAters()
          .equals(other.getAters())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_FIELD_NUMBER;
      hash = (53 * hash) + getMsg().hashCode();
      hash = (37 * hash) + RECEIVER_FIELD_NUMBER;
      hash = (53 * hash) + getReceiver().hashCode();
      hash = (37 * hash) + ATERS_FIELD_NUMBER;
      hash = (53 * hash) + getAters().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.TextMsg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.TextMsg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.TextMsg)
        com.iamteer.Wcf.TextMsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_TextMsg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_TextMsg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.TextMsg.class, com.iamteer.Wcf.TextMsg.Builder.class);
      }

      // Construct using com.iamteer.Wcf.TextMsg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        receiver_ = "";

        aters_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_TextMsg_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.TextMsg getDefaultInstanceForType() {
        return com.iamteer.Wcf.TextMsg.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.TextMsg build() {
        com.iamteer.Wcf.TextMsg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.TextMsg buildPartial() {
        com.iamteer.Wcf.TextMsg result = new com.iamteer.Wcf.TextMsg(this);
        result.msg_ = msg_;
        result.receiver_ = receiver_;
        result.aters_ = aters_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.TextMsg other) {
        if (other == com.iamteer.Wcf.TextMsg.getDefaultInstance()) return this;
        if (!other.getMsg().isEmpty()) {
          msg_ = other.msg_;
          onChanged();
        }
        if (!other.getReceiver().isEmpty()) {
          receiver_ = other.receiver_;
          onChanged();
        }
        if (!other.getAters().isEmpty()) {
          aters_ = other.aters_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.TextMsg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.TextMsg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msg_ = "";
      /**
       * <pre>
       * 要发送的消息内容
       * </pre>
       *
       * <code>string msg = 1;</code>
       * @return The msg.
       */
      public java.lang.String getMsg() {
        java.lang.Object ref = msg_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msg_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 要发送的消息内容
       * </pre>
       *
       * <code>string msg = 1;</code>
       * @return The bytes for msg.
       */
      public com.google.protobuf.ByteString
          getMsgBytes() {
        java.lang.Object ref = msg_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msg_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 要发送的消息内容
       * </pre>
       *
       * <code>string msg = 1;</code>
       * @param value The msg to set.
       * @return This builder for chaining.
       */
      public Builder setMsg(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要发送的消息内容
       * </pre>
       *
       * <code>string msg = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMsg() {
        
        msg_ = getDefaultInstance().getMsg();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要发送的消息内容
       * </pre>
       *
       * <code>string msg = 1;</code>
       * @param value The bytes for msg to set.
       * @return This builder for chaining.
       */
      public Builder setMsgBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msg_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object receiver_ = "";
      /**
       * <pre>
       * 消息接收人，当为群时可&#64;
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @return The receiver.
       */
      public java.lang.String getReceiver() {
        java.lang.Object ref = receiver_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          receiver_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 消息接收人，当为群时可&#64;
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @return The bytes for receiver.
       */
      public com.google.protobuf.ByteString
          getReceiverBytes() {
        java.lang.Object ref = receiver_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          receiver_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息接收人，当为群时可&#64;
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @param value The receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiver(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        receiver_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息接收人，当为群时可&#64;
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearReceiver() {
        
        receiver_ = getDefaultInstance().getReceiver();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息接收人，当为群时可&#64;
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @param value The bytes for receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiverBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        receiver_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object aters_ = "";
      /**
       * <pre>
       * 要&#64;的人列表，逗号分隔
       * </pre>
       *
       * <code>string aters = 3;</code>
       * @return The aters.
       */
      public java.lang.String getAters() {
        java.lang.Object ref = aters_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          aters_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 要&#64;的人列表，逗号分隔
       * </pre>
       *
       * <code>string aters = 3;</code>
       * @return The bytes for aters.
       */
      public com.google.protobuf.ByteString
          getAtersBytes() {
        java.lang.Object ref = aters_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          aters_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 要&#64;的人列表，逗号分隔
       * </pre>
       *
       * <code>string aters = 3;</code>
       * @param value The aters to set.
       * @return This builder for chaining.
       */
      public Builder setAters(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        aters_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要&#64;的人列表，逗号分隔
       * </pre>
       *
       * <code>string aters = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAters() {
        
        aters_ = getDefaultInstance().getAters();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要&#64;的人列表，逗号分隔
       * </pre>
       *
       * <code>string aters = 3;</code>
       * @param value The bytes for aters to set.
       * @return This builder for chaining.
       */
      public Builder setAtersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        aters_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.TextMsg)
    }

    // @@protoc_insertion_point(class_scope:wcf.TextMsg)
    private static final com.iamteer.Wcf.TextMsg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.TextMsg();
    }

    public static com.iamteer.Wcf.TextMsg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.TextMsg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PathMsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.PathMsg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 要发送的图片的路径
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * 要发送的图片的路径
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * 消息接收人
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The receiver.
     */
    java.lang.String getReceiver();
    /**
     * <pre>
     * 消息接收人
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The bytes for receiver.
     */
    com.google.protobuf.ByteString
        getReceiverBytes();
  }
  /**
   * Protobuf type {@code wcf.PathMsg}
   */
  public static final class PathMsg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.PathMsg)
      PathMsgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PathMsg.newBuilder() to construct.
    private PathMsg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PathMsg() {
      path_ = "";
      receiver_ = "";
    }

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

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

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

              receiver_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_PathMsg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_PathMsg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.PathMsg.class, com.iamteer.Wcf.PathMsg.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object path_;
    /**
     * <pre>
     * 要发送的图片的路径
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The path.
     */
    @java.lang.Override
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      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();
        path_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 要发送的图片的路径
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The bytes for path.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RECEIVER_FIELD_NUMBER = 2;
    private volatile java.lang.Object receiver_;
    /**
     * <pre>
     * 消息接收人
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The receiver.
     */
    @java.lang.Override
    public java.lang.String getReceiver() {
      java.lang.Object ref = receiver_;
      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();
        receiver_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息接收人
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The bytes for receiver.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReceiverBytes() {
      java.lang.Object ref = receiver_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        receiver_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, receiver_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, receiver_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.PathMsg)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.PathMsg other = (com.iamteer.Wcf.PathMsg) obj;

      if (!getPath()
          .equals(other.getPath())) return false;
      if (!getReceiver()
          .equals(other.getReceiver())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + RECEIVER_FIELD_NUMBER;
      hash = (53 * hash) + getReceiver().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.PathMsg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.PathMsg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.PathMsg)
        com.iamteer.Wcf.PathMsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_PathMsg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_PathMsg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.PathMsg.class, com.iamteer.Wcf.PathMsg.Builder.class);
      }

      // Construct using com.iamteer.Wcf.PathMsg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        receiver_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_PathMsg_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.PathMsg getDefaultInstanceForType() {
        return com.iamteer.Wcf.PathMsg.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.PathMsg build() {
        com.iamteer.Wcf.PathMsg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.PathMsg buildPartial() {
        com.iamteer.Wcf.PathMsg result = new com.iamteer.Wcf.PathMsg(this);
        result.path_ = path_;
        result.receiver_ = receiver_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.PathMsg other) {
        if (other == com.iamteer.Wcf.PathMsg.getDefaultInstance()) return this;
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          onChanged();
        }
        if (!other.getReceiver().isEmpty()) {
          receiver_ = other.receiver_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.PathMsg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.PathMsg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * 要发送的图片的路径
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return The path.
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 要发送的图片的路径
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return The bytes for path.
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 要发送的图片的路径
       * </pre>
       *
       * <code>string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        path_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要发送的图片的路径
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        
        path_ = getDefaultInstance().getPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要发送的图片的路径
       * </pre>
       *
       * <code>string path = 1;</code>
       * @param value The bytes for path to set.
       * @return This builder for chaining.
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        path_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object receiver_ = "";
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @return The receiver.
       */
      public java.lang.String getReceiver() {
        java.lang.Object ref = receiver_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          receiver_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @return The bytes for receiver.
       */
      public com.google.protobuf.ByteString
          getReceiverBytes() {
        java.lang.Object ref = receiver_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          receiver_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @param value The receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiver(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        receiver_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearReceiver() {
        
        receiver_ = getDefaultInstance().getReceiver();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @param value The bytes for receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiverBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        receiver_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.PathMsg)
    }

    // @@protoc_insertion_point(class_scope:wcf.PathMsg)
    private static final com.iamteer.Wcf.PathMsg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.PathMsg();
    }

    public static com.iamteer.Wcf.PathMsg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.PathMsg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface XmlMsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.XmlMsg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 消息接收人
     * </pre>
     *
     * <code>string receiver = 1;</code>
     * @return The receiver.
     */
    java.lang.String getReceiver();
    /**
     * <pre>
     * 消息接收人
     * </pre>
     *
     * <code>string receiver = 1;</code>
     * @return The bytes for receiver.
     */
    com.google.protobuf.ByteString
        getReceiverBytes();

    /**
     * <pre>
     * xml 内容
     * </pre>
     *
     * <code>string content = 2;</code>
     * @return The content.
     */
    java.lang.String getContent();
    /**
     * <pre>
     * xml 内容
     * </pre>
     *
     * <code>string content = 2;</code>
     * @return The bytes for content.
     */
    com.google.protobuf.ByteString
        getContentBytes();

    /**
     * <pre>
     * 图片路径
     * </pre>
     *
     * <code>string path = 3;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * 图片路径
     * </pre>
     *
     * <code>string path = 3;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>int32 type = 4;</code>
     * @return The type.
     */
    int getType();
  }
  /**
   * Protobuf type {@code wcf.XmlMsg}
   */
  public static final class XmlMsg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.XmlMsg)
      XmlMsgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use XmlMsg.newBuilder() to construct.
    private XmlMsg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private XmlMsg() {
      receiver_ = "";
      content_ = "";
      path_ = "";
    }

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

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

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

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

              path_ = s;
              break;
            }
            case 32: {

              type_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_XmlMsg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_XmlMsg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.XmlMsg.class, com.iamteer.Wcf.XmlMsg.Builder.class);
    }

    public static final int RECEIVER_FIELD_NUMBER = 1;
    private volatile java.lang.Object receiver_;
    /**
     * <pre>
     * 消息接收人
     * </pre>
     *
     * <code>string receiver = 1;</code>
     * @return The receiver.
     */
    @java.lang.Override
    public java.lang.String getReceiver() {
      java.lang.Object ref = receiver_;
      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();
        receiver_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息接收人
     * </pre>
     *
     * <code>string receiver = 1;</code>
     * @return The bytes for receiver.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReceiverBytes() {
      java.lang.Object ref = receiver_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        receiver_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTENT_FIELD_NUMBER = 2;
    private volatile java.lang.Object content_;
    /**
     * <pre>
     * xml 内容
     * </pre>
     *
     * <code>string content = 2;</code>
     * @return The content.
     */
    @java.lang.Override
    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();
        content_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * xml 内容
     * </pre>
     *
     * <code>string content = 2;</code>
     * @return The bytes for content.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int PATH_FIELD_NUMBER = 3;
    private volatile java.lang.Object path_;
    /**
     * <pre>
     * 图片路径
     * </pre>
     *
     * <code>string path = 3;</code>
     * @return The path.
     */
    @java.lang.Override
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      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();
        path_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 图片路径
     * </pre>
     *
     * <code>string path = 3;</code>
     * @return The bytes for path.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    private int type_;
    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>int32 type = 4;</code>
     * @return The type.
     */
    @java.lang.Override
    public int getType() {
      return type_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, receiver_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(content_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, content_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, path_);
      }
      if (type_ != 0) {
        output.writeInt32(4, type_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, receiver_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(content_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, content_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, path_);
      }
      if (type_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, type_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.XmlMsg)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.XmlMsg other = (com.iamteer.Wcf.XmlMsg) obj;

      if (!getReceiver()
          .equals(other.getReceiver())) return false;
      if (!getContent()
          .equals(other.getContent())) return false;
      if (!getPath()
          .equals(other.getPath())) return false;
      if (getType()
          != other.getType()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + RECEIVER_FIELD_NUMBER;
      hash = (53 * hash) + getReceiver().hashCode();
      hash = (37 * hash) + CONTENT_FIELD_NUMBER;
      hash = (53 * hash) + getContent().hashCode();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.XmlMsg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.XmlMsg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.XmlMsg)
        com.iamteer.Wcf.XmlMsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_XmlMsg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_XmlMsg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.XmlMsg.class, com.iamteer.Wcf.XmlMsg.Builder.class);
      }

      // Construct using com.iamteer.Wcf.XmlMsg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        content_ = "";

        path_ = "";

        type_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_XmlMsg_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.XmlMsg getDefaultInstanceForType() {
        return com.iamteer.Wcf.XmlMsg.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.XmlMsg build() {
        com.iamteer.Wcf.XmlMsg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.XmlMsg buildPartial() {
        com.iamteer.Wcf.XmlMsg result = new com.iamteer.Wcf.XmlMsg(this);
        result.receiver_ = receiver_;
        result.content_ = content_;
        result.path_ = path_;
        result.type_ = type_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.XmlMsg other) {
        if (other == com.iamteer.Wcf.XmlMsg.getDefaultInstance()) return this;
        if (!other.getReceiver().isEmpty()) {
          receiver_ = other.receiver_;
          onChanged();
        }
        if (!other.getContent().isEmpty()) {
          content_ = other.content_;
          onChanged();
        }
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          onChanged();
        }
        if (other.getType() != 0) {
          setType(other.getType());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.XmlMsg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.XmlMsg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object receiver_ = "";
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 1;</code>
       * @return The receiver.
       */
      public java.lang.String getReceiver() {
        java.lang.Object ref = receiver_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          receiver_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 1;</code>
       * @return The bytes for receiver.
       */
      public com.google.protobuf.ByteString
          getReceiverBytes() {
        java.lang.Object ref = receiver_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          receiver_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 1;</code>
       * @param value The receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiver(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        receiver_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearReceiver() {
        
        receiver_ = getDefaultInstance().getReceiver();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息接收人
       * </pre>
       *
       * <code>string receiver = 1;</code>
       * @param value The bytes for receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiverBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        receiver_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object content_ = "";
      /**
       * <pre>
       * xml 内容
       * </pre>
       *
       * <code>string content = 2;</code>
       * @return The content.
       */
      public java.lang.String getContent() {
        java.lang.Object ref = content_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          content_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * xml 内容
       * </pre>
       *
       * <code>string content = 2;</code>
       * @return The bytes for content.
       */
      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;
        }
      }
      /**
       * <pre>
       * xml 内容
       * </pre>
       *
       * <code>string content = 2;</code>
       * @param value The content to set.
       * @return This builder for chaining.
       */
      public Builder setContent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        content_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * xml 内容
       * </pre>
       *
       * <code>string content = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearContent() {
        
        content_ = getDefaultInstance().getContent();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * xml 内容
       * </pre>
       *
       * <code>string content = 2;</code>
       * @param value The bytes for content to set.
       * @return This builder for chaining.
       */
      public Builder setContentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        content_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * 图片路径
       * </pre>
       *
       * <code>string path = 3;</code>
       * @return The path.
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 图片路径
       * </pre>
       *
       * <code>string path = 3;</code>
       * @return The bytes for path.
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 图片路径
       * </pre>
       *
       * <code>string path = 3;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        path_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 图片路径
       * </pre>
       *
       * <code>string path = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        
        path_ = getDefaultInstance().getPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 图片路径
       * </pre>
       *
       * <code>string path = 3;</code>
       * @param value The bytes for path to set.
       * @return This builder for chaining.
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        path_ = value;
        onChanged();
        return this;
      }

      private int type_ ;
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>int32 type = 4;</code>
       * @return The type.
       */
      @java.lang.Override
      public int getType() {
        return type_;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>int32 type = 4;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(int value) {
        
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>int32 type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        
        type_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.XmlMsg)
    }

    // @@protoc_insertion_point(class_scope:wcf.XmlMsg)
    private static final com.iamteer.Wcf.XmlMsg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.XmlMsg();
    }

    public static com.iamteer.Wcf.XmlMsg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.XmlMsg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MsgTypesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.MsgTypes)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>map&lt;int32, string&gt; types = 1;</code>
     */
    int getTypesCount();
    /**
     * <code>map&lt;int32, string&gt; types = 1;</code>
     */
    boolean containsTypes(
        int key);
    /**
     * Use {@link #getTypesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.String>
    getTypes();
    /**
     * <code>map&lt;int32, string&gt; types = 1;</code>
     */
    java.util.Map<java.lang.Integer, java.lang.String>
    getTypesMap();
    /**
     * <code>map&lt;int32, string&gt; types = 1;</code>
     */

    java.lang.String getTypesOrDefault(
        int key,
        java.lang.String defaultValue);
    /**
     * <code>map&lt;int32, string&gt; types = 1;</code>
     */

    java.lang.String getTypesOrThrow(
        int key);
  }
  /**
   * Protobuf type {@code wcf.MsgTypes}
   */
  public static final class MsgTypes extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.MsgTypes)
      MsgTypesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MsgTypes.newBuilder() to construct.
    private MsgTypes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MsgTypes() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MsgTypes(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                types_ = com.google.protobuf.MapField.newMapField(
                    TypesDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<java.lang.Integer, java.lang.String>
              types__ = input.readMessage(
                  TypesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              types_.getMutableMap().put(
                  types__.getKey(), types__.getValue());
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_MsgTypes_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetTypes();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_MsgTypes_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.MsgTypes.class, com.iamteer.Wcf.MsgTypes.Builder.class);
    }

    public static final int TYPES_FIELD_NUMBER = 1;
    private static final class TypesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.Integer, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.Integer, java.lang.String>newDefaultInstance(
                  com.iamteer.Wcf.internal_static_wcf_MsgTypes_TypesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.INT32,
                  0,
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.Integer, java.lang.String> types_;
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.String>
    internalGetTypes() {
      if (types_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            TypesDefaultEntryHolder.defaultEntry);
      }
      return types_;
    }

    public int getTypesCount() {
      return internalGetTypes().getMap().size();
    }
    /**
     * <code>map&lt;int32, string&gt; types = 1;</code>
     */

    @java.lang.Override
    public boolean containsTypes(
        int key) {
      
      return internalGetTypes().getMap().containsKey(key);
    }
    /**
     * Use {@link #getTypesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.String> getTypes() {
      return getTypesMap();
    }
    /**
     * <code>map&lt;int32, string&gt; types = 1;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.Integer, java.lang.String> getTypesMap() {
      return internalGetTypes().getMap();
    }
    /**
     * <code>map&lt;int32, string&gt; types = 1;</code>
     */
    @java.lang.Override

    public java.lang.String getTypesOrDefault(
        int key,
        java.lang.String defaultValue) {
      
      java.util.Map<java.lang.Integer, java.lang.String> map =
          internalGetTypes().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;int32, string&gt; types = 1;</code>
     */
    @java.lang.Override

    public java.lang.String getTypesOrThrow(
        int key) {
      
      java.util.Map<java.lang.Integer, java.lang.String> map =
          internalGetTypes().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .serializeIntegerMapTo(
          output,
          internalGetTypes(),
          TypesDefaultEntryHolder.defaultEntry,
          1);
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (java.util.Map.Entry<java.lang.Integer, java.lang.String> entry
           : internalGetTypes().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.String>
        types__ = TypesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, types__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.MsgTypes)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.MsgTypes other = (com.iamteer.Wcf.MsgTypes) obj;

      if (!internalGetTypes().equals(
          other.internalGetTypes())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (!internalGetTypes().getMap().isEmpty()) {
        hash = (37 * hash) + TYPES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetTypes().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.MsgTypes prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.MsgTypes}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.MsgTypes)
        com.iamteer.Wcf.MsgTypesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_MsgTypes_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetTypes();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableTypes();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_MsgTypes_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.MsgTypes.class, com.iamteer.Wcf.MsgTypes.Builder.class);
      }

      // Construct using com.iamteer.Wcf.MsgTypes.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        internalGetMutableTypes().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_MsgTypes_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.MsgTypes getDefaultInstanceForType() {
        return com.iamteer.Wcf.MsgTypes.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.MsgTypes build() {
        com.iamteer.Wcf.MsgTypes result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.MsgTypes buildPartial() {
        com.iamteer.Wcf.MsgTypes result = new com.iamteer.Wcf.MsgTypes(this);
        int from_bitField0_ = bitField0_;
        result.types_ = internalGetTypes();
        result.types_.makeImmutable();
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.MsgTypes other) {
        if (other == com.iamteer.Wcf.MsgTypes.getDefaultInstance()) return this;
        internalGetMutableTypes().mergeFrom(
            other.internalGetTypes());
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.protobuf.MapField<
          java.lang.Integer, java.lang.String> types_;
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.String>
      internalGetTypes() {
        if (types_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              TypesDefaultEntryHolder.defaultEntry);
        }
        return types_;
      }
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.String>
      internalGetMutableTypes() {
        onChanged();;
        if (types_ == null) {
          types_ = com.google.protobuf.MapField.newMapField(
              TypesDefaultEntryHolder.defaultEntry);
        }
        if (!types_.isMutable()) {
          types_ = types_.copy();
        }
        return types_;
      }

      public int getTypesCount() {
        return internalGetTypes().getMap().size();
      }
      /**
       * <code>map&lt;int32, string&gt; types = 1;</code>
       */

      @java.lang.Override
      public boolean containsTypes(
          int key) {
        
        return internalGetTypes().getMap().containsKey(key);
      }
      /**
       * Use {@link #getTypesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.String> getTypes() {
        return getTypesMap();
      }
      /**
       * <code>map&lt;int32, string&gt; types = 1;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.Integer, java.lang.String> getTypesMap() {
        return internalGetTypes().getMap();
      }
      /**
       * <code>map&lt;int32, string&gt; types = 1;</code>
       */
      @java.lang.Override

      public java.lang.String getTypesOrDefault(
          int key,
          java.lang.String defaultValue) {
        
        java.util.Map<java.lang.Integer, java.lang.String> map =
            internalGetTypes().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;int32, string&gt; types = 1;</code>
       */
      @java.lang.Override

      public java.lang.String getTypesOrThrow(
          int key) {
        
        java.util.Map<java.lang.Integer, java.lang.String> map =
            internalGetTypes().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearTypes() {
        internalGetMutableTypes().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;int32, string&gt; types = 1;</code>
       */

      public Builder removeTypes(
          int key) {
        
        internalGetMutableTypes().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.String>
      getMutableTypes() {
        return internalGetMutableTypes().getMutableMap();
      }
      /**
       * <code>map&lt;int32, string&gt; types = 1;</code>
       */
      public Builder putTypes(
          int key,
          java.lang.String value) {
        
        if (value == null) {
  throw new NullPointerException("map value");
}

        internalGetMutableTypes().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;int32, string&gt; types = 1;</code>
       */

      public Builder putAllTypes(
          java.util.Map<java.lang.Integer, java.lang.String> values) {
        internalGetMutableTypes().getMutableMap()
            .putAll(values);
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.MsgTypes)
    }

    // @@protoc_insertion_point(class_scope:wcf.MsgTypes)
    private static final com.iamteer.Wcf.MsgTypes DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.MsgTypes();
    }

    public static com.iamteer.Wcf.MsgTypes getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.MsgTypes getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RpcContactOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.RpcContact)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 微信 id
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The wxid.
     */
    java.lang.String getWxid();
    /**
     * <pre>
     * 微信 id
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The bytes for wxid.
     */
    com.google.protobuf.ByteString
        getWxidBytes();

    /**
     * <pre>
     * 微信号
     * </pre>
     *
     * <code>string code = 2;</code>
     * @return The code.
     */
    java.lang.String getCode();
    /**
     * <pre>
     * 微信号
     * </pre>
     *
     * <code>string code = 2;</code>
     * @return The bytes for code.
     */
    com.google.protobuf.ByteString
        getCodeBytes();

    /**
     * <pre>
     * 备注
     * </pre>
     *
     * <code>string remark = 3;</code>
     * @return The remark.
     */
    java.lang.String getRemark();
    /**
     * <pre>
     * 备注
     * </pre>
     *
     * <code>string remark = 3;</code>
     * @return The bytes for remark.
     */
    com.google.protobuf.ByteString
        getRemarkBytes();

    /**
     * <pre>
     * 微信昵称
     * </pre>
     *
     * <code>string name = 4;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * 微信昵称
     * </pre>
     *
     * <code>string name = 4;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * 国家
     * </pre>
     *
     * <code>string country = 5;</code>
     * @return The country.
     */
    java.lang.String getCountry();
    /**
     * <pre>
     * 国家
     * </pre>
     *
     * <code>string country = 5;</code>
     * @return The bytes for country.
     */
    com.google.protobuf.ByteString
        getCountryBytes();

    /**
     * <pre>
     * 省/州
     * </pre>
     *
     * <code>string province = 6;</code>
     * @return The province.
     */
    java.lang.String getProvince();
    /**
     * <pre>
     * 省/州
     * </pre>
     *
     * <code>string province = 6;</code>
     * @return The bytes for province.
     */
    com.google.protobuf.ByteString
        getProvinceBytes();

    /**
     * <pre>
     * 城市
     * </pre>
     *
     * <code>string city = 7;</code>
     * @return The city.
     */
    java.lang.String getCity();
    /**
     * <pre>
     * 城市
     * </pre>
     *
     * <code>string city = 7;</code>
     * @return The bytes for city.
     */
    com.google.protobuf.ByteString
        getCityBytes();

    /**
     * <pre>
     * 性别
     * </pre>
     *
     * <code>int32 gender = 8;</code>
     * @return The gender.
     */
    int getGender();
  }
  /**
   * Protobuf type {@code wcf.RpcContact}
   */
  public static final class RpcContact extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.RpcContact)
      RpcContactOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RpcContact.newBuilder() to construct.
    private RpcContact(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RpcContact() {
      wxid_ = "";
      code_ = "";
      remark_ = "";
      name_ = "";
      country_ = "";
      province_ = "";
      city_ = "";
    }

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

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

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

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

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

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

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

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

              city_ = s;
              break;
            }
            case 64: {

              gender_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_RpcContact_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_RpcContact_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.RpcContact.class, com.iamteer.Wcf.RpcContact.Builder.class);
    }

    public static final int WXID_FIELD_NUMBER = 1;
    private volatile java.lang.Object wxid_;
    /**
     * <pre>
     * 微信 id
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The wxid.
     */
    @java.lang.Override
    public java.lang.String getWxid() {
      java.lang.Object ref = wxid_;
      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();
        wxid_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 微信 id
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The bytes for wxid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWxidBytes() {
      java.lang.Object ref = wxid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        wxid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CODE_FIELD_NUMBER = 2;
    private volatile java.lang.Object code_;
    /**
     * <pre>
     * 微信号
     * </pre>
     *
     * <code>string code = 2;</code>
     * @return The code.
     */
    @java.lang.Override
    public java.lang.String getCode() {
      java.lang.Object ref = code_;
      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();
        code_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 微信号
     * </pre>
     *
     * <code>string code = 2;</code>
     * @return The bytes for code.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCodeBytes() {
      java.lang.Object ref = code_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        code_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REMARK_FIELD_NUMBER = 3;
    private volatile java.lang.Object remark_;
    /**
     * <pre>
     * 备注
     * </pre>
     *
     * <code>string remark = 3;</code>
     * @return The remark.
     */
    @java.lang.Override
    public java.lang.String getRemark() {
      java.lang.Object ref = remark_;
      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();
        remark_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 备注
     * </pre>
     *
     * <code>string remark = 3;</code>
     * @return The bytes for remark.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRemarkBytes() {
      java.lang.Object ref = remark_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        remark_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 4;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * 微信昵称
     * </pre>
     *
     * <code>string name = 4;</code>
     * @return The name.
     */
    @java.lang.Override
    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();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 微信昵称
     * </pre>
     *
     * <code>string name = 4;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int COUNTRY_FIELD_NUMBER = 5;
    private volatile java.lang.Object country_;
    /**
     * <pre>
     * 国家
     * </pre>
     *
     * <code>string country = 5;</code>
     * @return The country.
     */
    @java.lang.Override
    public java.lang.String getCountry() {
      java.lang.Object ref = country_;
      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();
        country_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 国家
     * </pre>
     *
     * <code>string country = 5;</code>
     * @return The bytes for country.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCountryBytes() {
      java.lang.Object ref = country_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        country_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PROVINCE_FIELD_NUMBER = 6;
    private volatile java.lang.Object province_;
    /**
     * <pre>
     * 省/州
     * </pre>
     *
     * <code>string province = 6;</code>
     * @return The province.
     */
    @java.lang.Override
    public java.lang.String getProvince() {
      java.lang.Object ref = province_;
      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();
        province_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 省/州
     * </pre>
     *
     * <code>string province = 6;</code>
     * @return The bytes for province.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getProvinceBytes() {
      java.lang.Object ref = province_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        province_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CITY_FIELD_NUMBER = 7;
    private volatile java.lang.Object city_;
    /**
     * <pre>
     * 城市
     * </pre>
     *
     * <code>string city = 7;</code>
     * @return The city.
     */
    @java.lang.Override
    public java.lang.String getCity() {
      java.lang.Object ref = city_;
      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();
        city_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 城市
     * </pre>
     *
     * <code>string city = 7;</code>
     * @return The bytes for city.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCityBytes() {
      java.lang.Object ref = city_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        city_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GENDER_FIELD_NUMBER = 8;
    private int gender_;
    /**
     * <pre>
     * 性别
     * </pre>
     *
     * <code>int32 gender = 8;</code>
     * @return The gender.
     */
    @java.lang.Override
    public int getGender() {
      return gender_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, wxid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(code_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, code_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remark_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, remark_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(country_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, country_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(province_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, province_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(city_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, city_);
      }
      if (gender_ != 0) {
        output.writeInt32(8, gender_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, wxid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(code_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, code_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remark_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, remark_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(country_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, country_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(province_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, province_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(city_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, city_);
      }
      if (gender_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, gender_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.RpcContact)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.RpcContact other = (com.iamteer.Wcf.RpcContact) obj;

      if (!getWxid()
          .equals(other.getWxid())) return false;
      if (!getCode()
          .equals(other.getCode())) return false;
      if (!getRemark()
          .equals(other.getRemark())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getCountry()
          .equals(other.getCountry())) return false;
      if (!getProvince()
          .equals(other.getProvince())) return false;
      if (!getCity()
          .equals(other.getCity())) return false;
      if (getGender()
          != other.getGender()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + WXID_FIELD_NUMBER;
      hash = (53 * hash) + getWxid().hashCode();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode().hashCode();
      hash = (37 * hash) + REMARK_FIELD_NUMBER;
      hash = (53 * hash) + getRemark().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + COUNTRY_FIELD_NUMBER;
      hash = (53 * hash) + getCountry().hashCode();
      hash = (37 * hash) + PROVINCE_FIELD_NUMBER;
      hash = (53 * hash) + getProvince().hashCode();
      hash = (37 * hash) + CITY_FIELD_NUMBER;
      hash = (53 * hash) + getCity().hashCode();
      hash = (37 * hash) + GENDER_FIELD_NUMBER;
      hash = (53 * hash) + getGender();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.RpcContact prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.RpcContact}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.RpcContact)
        com.iamteer.Wcf.RpcContactOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_RpcContact_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_RpcContact_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.RpcContact.class, com.iamteer.Wcf.RpcContact.Builder.class);
      }

      // Construct using com.iamteer.Wcf.RpcContact.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        code_ = "";

        remark_ = "";

        name_ = "";

        country_ = "";

        province_ = "";

        city_ = "";

        gender_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_RpcContact_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.RpcContact getDefaultInstanceForType() {
        return com.iamteer.Wcf.RpcContact.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.RpcContact build() {
        com.iamteer.Wcf.RpcContact result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.RpcContact buildPartial() {
        com.iamteer.Wcf.RpcContact result = new com.iamteer.Wcf.RpcContact(this);
        result.wxid_ = wxid_;
        result.code_ = code_;
        result.remark_ = remark_;
        result.name_ = name_;
        result.country_ = country_;
        result.province_ = province_;
        result.city_ = city_;
        result.gender_ = gender_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.RpcContact other) {
        if (other == com.iamteer.Wcf.RpcContact.getDefaultInstance()) return this;
        if (!other.getWxid().isEmpty()) {
          wxid_ = other.wxid_;
          onChanged();
        }
        if (!other.getCode().isEmpty()) {
          code_ = other.code_;
          onChanged();
        }
        if (!other.getRemark().isEmpty()) {
          remark_ = other.remark_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getCountry().isEmpty()) {
          country_ = other.country_;
          onChanged();
        }
        if (!other.getProvince().isEmpty()) {
          province_ = other.province_;
          onChanged();
        }
        if (!other.getCity().isEmpty()) {
          city_ = other.city_;
          onChanged();
        }
        if (other.getGender() != 0) {
          setGender(other.getGender());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.RpcContact parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.RpcContact) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object wxid_ = "";
      /**
       * <pre>
       * 微信 id
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @return The wxid.
       */
      public java.lang.String getWxid() {
        java.lang.Object ref = wxid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          wxid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 微信 id
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @return The bytes for wxid.
       */
      public com.google.protobuf.ByteString
          getWxidBytes() {
        java.lang.Object ref = wxid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          wxid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 微信 id
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @param value The wxid to set.
       * @return This builder for chaining.
       */
      public Builder setWxid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        wxid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 微信 id
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearWxid() {
        
        wxid_ = getDefaultInstance().getWxid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 微信 id
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @param value The bytes for wxid to set.
       * @return This builder for chaining.
       */
      public Builder setWxidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        wxid_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object code_ = "";
      /**
       * <pre>
       * 微信号
       * </pre>
       *
       * <code>string code = 2;</code>
       * @return The code.
       */
      public java.lang.String getCode() {
        java.lang.Object ref = code_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          code_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 微信号
       * </pre>
       *
       * <code>string code = 2;</code>
       * @return The bytes for code.
       */
      public com.google.protobuf.ByteString
          getCodeBytes() {
        java.lang.Object ref = code_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          code_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 微信号
       * </pre>
       *
       * <code>string code = 2;</code>
       * @param value The code to set.
       * @return This builder for chaining.
       */
      public Builder setCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        code_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 微信号
       * </pre>
       *
       * <code>string code = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCode() {
        
        code_ = getDefaultInstance().getCode();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 微信号
       * </pre>
       *
       * <code>string code = 2;</code>
       * @param value The bytes for code to set.
       * @return This builder for chaining.
       */
      public Builder setCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        code_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object remark_ = "";
      /**
       * <pre>
       * 备注
       * </pre>
       *
       * <code>string remark = 3;</code>
       * @return The remark.
       */
      public java.lang.String getRemark() {
        java.lang.Object ref = remark_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          remark_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 备注
       * </pre>
       *
       * <code>string remark = 3;</code>
       * @return The bytes for remark.
       */
      public com.google.protobuf.ByteString
          getRemarkBytes() {
        java.lang.Object ref = remark_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          remark_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 备注
       * </pre>
       *
       * <code>string remark = 3;</code>
       * @param value The remark to set.
       * @return This builder for chaining.
       */
      public Builder setRemark(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        remark_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 备注
       * </pre>
       *
       * <code>string remark = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRemark() {
        
        remark_ = getDefaultInstance().getRemark();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 备注
       * </pre>
       *
       * <code>string remark = 3;</code>
       * @param value The bytes for remark to set.
       * @return This builder for chaining.
       */
      public Builder setRemarkBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        remark_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * 微信昵称
       * </pre>
       *
       * <code>string name = 4;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 微信昵称
       * </pre>
       *
       * <code>string name = 4;</code>
       * @return The bytes for name.
       */
      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;
        }
      }
      /**
       * <pre>
       * 微信昵称
       * </pre>
       *
       * <code>string name = 4;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 微信昵称
       * </pre>
       *
       * <code>string name = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 微信昵称
       * </pre>
       *
       * <code>string name = 4;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object country_ = "";
      /**
       * <pre>
       * 国家
       * </pre>
       *
       * <code>string country = 5;</code>
       * @return The country.
       */
      public java.lang.String getCountry() {
        java.lang.Object ref = country_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          country_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 国家
       * </pre>
       *
       * <code>string country = 5;</code>
       * @return The bytes for country.
       */
      public com.google.protobuf.ByteString
          getCountryBytes() {
        java.lang.Object ref = country_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          country_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 国家
       * </pre>
       *
       * <code>string country = 5;</code>
       * @param value The country to set.
       * @return This builder for chaining.
       */
      public Builder setCountry(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        country_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 国家
       * </pre>
       *
       * <code>string country = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearCountry() {
        
        country_ = getDefaultInstance().getCountry();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 国家
       * </pre>
       *
       * <code>string country = 5;</code>
       * @param value The bytes for country to set.
       * @return This builder for chaining.
       */
      public Builder setCountryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        country_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object province_ = "";
      /**
       * <pre>
       * 省/州
       * </pre>
       *
       * <code>string province = 6;</code>
       * @return The province.
       */
      public java.lang.String getProvince() {
        java.lang.Object ref = province_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          province_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 省/州
       * </pre>
       *
       * <code>string province = 6;</code>
       * @return The bytes for province.
       */
      public com.google.protobuf.ByteString
          getProvinceBytes() {
        java.lang.Object ref = province_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          province_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 省/州
       * </pre>
       *
       * <code>string province = 6;</code>
       * @param value The province to set.
       * @return This builder for chaining.
       */
      public Builder setProvince(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        province_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 省/州
       * </pre>
       *
       * <code>string province = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearProvince() {
        
        province_ = getDefaultInstance().getProvince();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 省/州
       * </pre>
       *
       * <code>string province = 6;</code>
       * @param value The bytes for province to set.
       * @return This builder for chaining.
       */
      public Builder setProvinceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        province_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object city_ = "";
      /**
       * <pre>
       * 城市
       * </pre>
       *
       * <code>string city = 7;</code>
       * @return The city.
       */
      public java.lang.String getCity() {
        java.lang.Object ref = city_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          city_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 城市
       * </pre>
       *
       * <code>string city = 7;</code>
       * @return The bytes for city.
       */
      public com.google.protobuf.ByteString
          getCityBytes() {
        java.lang.Object ref = city_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          city_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 城市
       * </pre>
       *
       * <code>string city = 7;</code>
       * @param value The city to set.
       * @return This builder for chaining.
       */
      public Builder setCity(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        city_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 城市
       * </pre>
       *
       * <code>string city = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearCity() {
        
        city_ = getDefaultInstance().getCity();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 城市
       * </pre>
       *
       * <code>string city = 7;</code>
       * @param value The bytes for city to set.
       * @return This builder for chaining.
       */
      public Builder setCityBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        city_ = value;
        onChanged();
        return this;
      }

      private int gender_ ;
      /**
       * <pre>
       * 性别
       * </pre>
       *
       * <code>int32 gender = 8;</code>
       * @return The gender.
       */
      @java.lang.Override
      public int getGender() {
        return gender_;
      }
      /**
       * <pre>
       * 性别
       * </pre>
       *
       * <code>int32 gender = 8;</code>
       * @param value The gender to set.
       * @return This builder for chaining.
       */
      public Builder setGender(int value) {
        
        gender_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 性别
       * </pre>
       *
       * <code>int32 gender = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearGender() {
        
        gender_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.RpcContact)
    }

    // @@protoc_insertion_point(class_scope:wcf.RpcContact)
    private static final com.iamteer.Wcf.RpcContact DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.RpcContact();
    }

    public static com.iamteer.Wcf.RpcContact getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.RpcContact getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RpcContactsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.RpcContacts)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    java.util.List<com.iamteer.Wcf.RpcContact> 
        getContactsList();
    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    com.iamteer.Wcf.RpcContact getContacts(int index);
    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    int getContactsCount();
    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    java.util.List<? extends com.iamteer.Wcf.RpcContactOrBuilder> 
        getContactsOrBuilderList();
    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    com.iamteer.Wcf.RpcContactOrBuilder getContactsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code wcf.RpcContacts}
   */
  public static final class RpcContacts extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.RpcContacts)
      RpcContactsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RpcContacts.newBuilder() to construct.
    private RpcContacts(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RpcContacts() {
      contacts_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RpcContacts(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                contacts_ = new java.util.ArrayList<com.iamteer.Wcf.RpcContact>();
                mutable_bitField0_ |= 0x00000001;
              }
              contacts_.add(
                  input.readMessage(com.iamteer.Wcf.RpcContact.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          contacts_ = java.util.Collections.unmodifiableList(contacts_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_RpcContacts_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_RpcContacts_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.RpcContacts.class, com.iamteer.Wcf.RpcContacts.Builder.class);
    }

    public static final int CONTACTS_FIELD_NUMBER = 1;
    private java.util.List<com.iamteer.Wcf.RpcContact> contacts_;
    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.iamteer.Wcf.RpcContact> getContactsList() {
      return contacts_;
    }
    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.iamteer.Wcf.RpcContactOrBuilder> 
        getContactsOrBuilderList() {
      return contacts_;
    }
    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    @java.lang.Override
    public int getContactsCount() {
      return contacts_.size();
    }
    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.RpcContact getContacts(int index) {
      return contacts_.get(index);
    }
    /**
     * <code>repeated .wcf.RpcContact contacts = 1;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.RpcContactOrBuilder getContactsOrBuilder(
        int index) {
      return contacts_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < contacts_.size(); i++) {
        output.writeMessage(1, contacts_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < contacts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, contacts_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.RpcContacts)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.RpcContacts other = (com.iamteer.Wcf.RpcContacts) obj;

      if (!getContactsList()
          .equals(other.getContactsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getContactsCount() > 0) {
        hash = (37 * hash) + CONTACTS_FIELD_NUMBER;
        hash = (53 * hash) + getContactsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.RpcContacts prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.RpcContacts}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.RpcContacts)
        com.iamteer.Wcf.RpcContactsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_RpcContacts_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_RpcContacts_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.RpcContacts.class, com.iamteer.Wcf.RpcContacts.Builder.class);
      }

      // Construct using com.iamteer.Wcf.RpcContacts.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getContactsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contactsBuilder_ == null) {
          contacts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          contactsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_RpcContacts_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.RpcContacts getDefaultInstanceForType() {
        return com.iamteer.Wcf.RpcContacts.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.RpcContacts build() {
        com.iamteer.Wcf.RpcContacts result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.RpcContacts buildPartial() {
        com.iamteer.Wcf.RpcContacts result = new com.iamteer.Wcf.RpcContacts(this);
        int from_bitField0_ = bitField0_;
        if (contactsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            contacts_ = java.util.Collections.unmodifiableList(contacts_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.contacts_ = contacts_;
        } else {
          result.contacts_ = contactsBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.RpcContacts other) {
        if (other == com.iamteer.Wcf.RpcContacts.getDefaultInstance()) return this;
        if (contactsBuilder_ == null) {
          if (!other.contacts_.isEmpty()) {
            if (contacts_.isEmpty()) {
              contacts_ = other.contacts_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureContactsIsMutable();
              contacts_.addAll(other.contacts_);
            }
            onChanged();
          }
        } else {
          if (!other.contacts_.isEmpty()) {
            if (contactsBuilder_.isEmpty()) {
              contactsBuilder_.dispose();
              contactsBuilder_ = null;
              contacts_ = other.contacts_;
              bitField0_ = (bitField0_ & ~0x00000001);
              contactsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getContactsFieldBuilder() : null;
            } else {
              contactsBuilder_.addAllMessages(other.contacts_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.util.List<com.iamteer.Wcf.RpcContact> contacts_ =
        java.util.Collections.emptyList();
      private void ensureContactsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          contacts_ = new java.util.ArrayList<com.iamteer.Wcf.RpcContact>(contacts_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.iamteer.Wcf.RpcContact, com.iamteer.Wcf.RpcContact.Builder, com.iamteer.Wcf.RpcContactOrBuilder> contactsBuilder_;

      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public java.util.List<com.iamteer.Wcf.RpcContact> getContactsList() {
        if (contactsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(contacts_);
        } else {
          return contactsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public int getContactsCount() {
        if (contactsBuilder_ == null) {
          return contacts_.size();
        } else {
          return contactsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public com.iamteer.Wcf.RpcContact getContacts(int index) {
        if (contactsBuilder_ == null) {
          return contacts_.get(index);
        } else {
          return contactsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public Builder setContacts(
          int index, com.iamteer.Wcf.RpcContact value) {
        if (contactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContactsIsMutable();
          contacts_.set(index, value);
          onChanged();
        } else {
          contactsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public Builder setContacts(
          int index, com.iamteer.Wcf.RpcContact.Builder builderForValue) {
        if (contactsBuilder_ == null) {
          ensureContactsIsMutable();
          contacts_.set(index, builderForValue.build());
          onChanged();
        } else {
          contactsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public Builder addContacts(com.iamteer.Wcf.RpcContact value) {
        if (contactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContactsIsMutable();
          contacts_.add(value);
          onChanged();
        } else {
          contactsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public Builder addContacts(
          int index, com.iamteer.Wcf.RpcContact value) {
        if (contactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContactsIsMutable();
          contacts_.add(index, value);
          onChanged();
        } else {
          contactsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public Builder addContacts(
          com.iamteer.Wcf.RpcContact.Builder builderForValue) {
        if (contactsBuilder_ == null) {
          ensureContactsIsMutable();
          contacts_.add(builderForValue.build());
          onChanged();
        } else {
          contactsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public Builder addContacts(
          int index, com.iamteer.Wcf.RpcContact.Builder builderForValue) {
        if (contactsBuilder_ == null) {
          ensureContactsIsMutable();
          contacts_.add(index, builderForValue.build());
          onChanged();
        } else {
          contactsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public Builder addAllContacts(
          java.lang.Iterable<? extends com.iamteer.Wcf.RpcContact> values) {
        if (contactsBuilder_ == null) {
          ensureContactsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, contacts_);
          onChanged();
        } else {
          contactsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public Builder clearContacts() {
        if (contactsBuilder_ == null) {
          contacts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          contactsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public Builder removeContacts(int index) {
        if (contactsBuilder_ == null) {
          ensureContactsIsMutable();
          contacts_.remove(index);
          onChanged();
        } else {
          contactsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public com.iamteer.Wcf.RpcContact.Builder getContactsBuilder(
          int index) {
        return getContactsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public com.iamteer.Wcf.RpcContactOrBuilder getContactsOrBuilder(
          int index) {
        if (contactsBuilder_ == null) {
          return contacts_.get(index);  } else {
          return contactsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public java.util.List<? extends com.iamteer.Wcf.RpcContactOrBuilder> 
           getContactsOrBuilderList() {
        if (contactsBuilder_ != null) {
          return contactsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(contacts_);
        }
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public com.iamteer.Wcf.RpcContact.Builder addContactsBuilder() {
        return getContactsFieldBuilder().addBuilder(
            com.iamteer.Wcf.RpcContact.getDefaultInstance());
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public com.iamteer.Wcf.RpcContact.Builder addContactsBuilder(
          int index) {
        return getContactsFieldBuilder().addBuilder(
            index, com.iamteer.Wcf.RpcContact.getDefaultInstance());
      }
      /**
       * <code>repeated .wcf.RpcContact contacts = 1;</code>
       */
      public java.util.List<com.iamteer.Wcf.RpcContact.Builder> 
           getContactsBuilderList() {
        return getContactsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.iamteer.Wcf.RpcContact, com.iamteer.Wcf.RpcContact.Builder, com.iamteer.Wcf.RpcContactOrBuilder> 
          getContactsFieldBuilder() {
        if (contactsBuilder_ == null) {
          contactsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.iamteer.Wcf.RpcContact, com.iamteer.Wcf.RpcContact.Builder, com.iamteer.Wcf.RpcContactOrBuilder>(
                  contacts_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          contacts_ = null;
        }
        return contactsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.RpcContacts)
    }

    // @@protoc_insertion_point(class_scope:wcf.RpcContacts)
    private static final com.iamteer.Wcf.RpcContacts DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.RpcContacts();
    }

    public static com.iamteer.Wcf.RpcContacts getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.RpcContacts getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DbNamesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.DbNames)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string names = 1;</code>
     * @return A list containing the names.
     */
    java.util.List<java.lang.String>
        getNamesList();
    /**
     * <code>repeated string names = 1;</code>
     * @return The count of names.
     */
    int getNamesCount();
    /**
     * <code>repeated string names = 1;</code>
     * @param index The index of the element to return.
     * @return The names at the given index.
     */
    java.lang.String getNames(int index);
    /**
     * <code>repeated string names = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the names at the given index.
     */
    com.google.protobuf.ByteString
        getNamesBytes(int index);
  }
  /**
   * Protobuf type {@code wcf.DbNames}
   */
  public static final class DbNames extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.DbNames)
      DbNamesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DbNames.newBuilder() to construct.
    private DbNames(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DbNames() {
      names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DbNames(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                names_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              names_.add(s);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          names_ = names_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_DbNames_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_DbNames_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.DbNames.class, com.iamteer.Wcf.DbNames.Builder.class);
    }

    public static final int NAMES_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList names_;
    /**
     * <code>repeated string names = 1;</code>
     * @return A list containing the names.
     */
    public com.google.protobuf.ProtocolStringList
        getNamesList() {
      return names_;
    }
    /**
     * <code>repeated string names = 1;</code>
     * @return The count of names.
     */
    public int getNamesCount() {
      return names_.size();
    }
    /**
     * <code>repeated string names = 1;</code>
     * @param index The index of the element to return.
     * @return The names at the given index.
     */
    public java.lang.String getNames(int index) {
      return names_.get(index);
    }
    /**
     * <code>repeated string names = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the names at the given index.
     */
    public com.google.protobuf.ByteString
        getNamesBytes(int index) {
      return names_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < names_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, names_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < names_.size(); i++) {
          dataSize += computeStringSizeNoTag(names_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getNamesList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.DbNames)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.DbNames other = (com.iamteer.Wcf.DbNames) obj;

      if (!getNamesList()
          .equals(other.getNamesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getNamesCount() > 0) {
        hash = (37 * hash) + NAMES_FIELD_NUMBER;
        hash = (53 * hash) + getNamesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.DbNames prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.DbNames}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.DbNames)
        com.iamteer.Wcf.DbNamesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_DbNames_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_DbNames_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.DbNames.class, com.iamteer.Wcf.DbNames.Builder.class);
      }

      // Construct using com.iamteer.Wcf.DbNames.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_DbNames_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbNames getDefaultInstanceForType() {
        return com.iamteer.Wcf.DbNames.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbNames build() {
        com.iamteer.Wcf.DbNames result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbNames buildPartial() {
        com.iamteer.Wcf.DbNames result = new com.iamteer.Wcf.DbNames(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          names_ = names_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.names_ = names_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.DbNames other) {
        if (other == com.iamteer.Wcf.DbNames.getDefaultInstance()) return this;
        if (!other.names_.isEmpty()) {
          if (names_.isEmpty()) {
            names_ = other.names_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureNamesIsMutable();
            names_.addAll(other.names_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.protobuf.LazyStringList names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureNamesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          names_ = new com.google.protobuf.LazyStringArrayList(names_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string names = 1;</code>
       * @return A list containing the names.
       */
      public com.google.protobuf.ProtocolStringList
          getNamesList() {
        return names_.getUnmodifiableView();
      }
      /**
       * <code>repeated string names = 1;</code>
       * @return The count of names.
       */
      public int getNamesCount() {
        return names_.size();
      }
      /**
       * <code>repeated string names = 1;</code>
       * @param index The index of the element to return.
       * @return The names at the given index.
       */
      public java.lang.String getNames(int index) {
        return names_.get(index);
      }
      /**
       * <code>repeated string names = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the names at the given index.
       */
      public com.google.protobuf.ByteString
          getNamesBytes(int index) {
        return names_.getByteString(index);
      }
      /**
       * <code>repeated string names = 1;</code>
       * @param index The index to set the value at.
       * @param value The names to set.
       * @return This builder for chaining.
       */
      public Builder setNames(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNamesIsMutable();
        names_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string names = 1;</code>
       * @param value The names to add.
       * @return This builder for chaining.
       */
      public Builder addNames(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNamesIsMutable();
        names_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string names = 1;</code>
       * @param values The names to add.
       * @return This builder for chaining.
       */
      public Builder addAllNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, names_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string names = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNames() {
        names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string names = 1;</code>
       * @param value The bytes of the names to add.
       * @return This builder for chaining.
       */
      public Builder addNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureNamesIsMutable();
        names_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.DbNames)
    }

    // @@protoc_insertion_point(class_scope:wcf.DbNames)
    private static final com.iamteer.Wcf.DbNames DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.DbNames();
    }

    public static com.iamteer.Wcf.DbNames getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.DbNames getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DbTableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.DbTable)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 表名
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * 表名
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * 建表 SQL
     * </pre>
     *
     * <code>string sql = 2;</code>
     * @return The sql.
     */
    java.lang.String getSql();
    /**
     * <pre>
     * 建表 SQL
     * </pre>
     *
     * <code>string sql = 2;</code>
     * @return The bytes for sql.
     */
    com.google.protobuf.ByteString
        getSqlBytes();
  }
  /**
   * Protobuf type {@code wcf.DbTable}
   */
  public static final class DbTable extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.DbTable)
      DbTableOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DbTable.newBuilder() to construct.
    private DbTable(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DbTable() {
      name_ = "";
      sql_ = "";
    }

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

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

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

              sql_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_DbTable_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_DbTable_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.DbTable.class, com.iamteer.Wcf.DbTable.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * 表名
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    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();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 表名
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int SQL_FIELD_NUMBER = 2;
    private volatile java.lang.Object sql_;
    /**
     * <pre>
     * 建表 SQL
     * </pre>
     *
     * <code>string sql = 2;</code>
     * @return The sql.
     */
    @java.lang.Override
    public java.lang.String getSql() {
      java.lang.Object ref = sql_;
      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();
        sql_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 建表 SQL
     * </pre>
     *
     * <code>string sql = 2;</code>
     * @return The bytes for sql.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSqlBytes() {
      java.lang.Object ref = sql_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sql_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sql_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, sql_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sql_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, sql_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.DbTable)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.DbTable other = (com.iamteer.Wcf.DbTable) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getSql()
          .equals(other.getSql())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + SQL_FIELD_NUMBER;
      hash = (53 * hash) + getSql().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.DbTable prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.DbTable}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.DbTable)
        com.iamteer.Wcf.DbTableOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_DbTable_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_DbTable_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.DbTable.class, com.iamteer.Wcf.DbTable.Builder.class);
      }

      // Construct using com.iamteer.Wcf.DbTable.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        sql_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_DbTable_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbTable getDefaultInstanceForType() {
        return com.iamteer.Wcf.DbTable.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbTable build() {
        com.iamteer.Wcf.DbTable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbTable buildPartial() {
        com.iamteer.Wcf.DbTable result = new com.iamteer.Wcf.DbTable(this);
        result.name_ = name_;
        result.sql_ = sql_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.DbTable other) {
        if (other == com.iamteer.Wcf.DbTable.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getSql().isEmpty()) {
          sql_ = other.sql_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.DbTable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.DbTable) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * 表名
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 表名
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      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;
        }
      }
      /**
       * <pre>
       * 表名
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 表名
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 表名
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sql_ = "";
      /**
       * <pre>
       * 建表 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @return The sql.
       */
      public java.lang.String getSql() {
        java.lang.Object ref = sql_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sql_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 建表 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @return The bytes for sql.
       */
      public com.google.protobuf.ByteString
          getSqlBytes() {
        java.lang.Object ref = sql_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sql_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 建表 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @param value The sql to set.
       * @return This builder for chaining.
       */
      public Builder setSql(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sql_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 建表 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSql() {
        
        sql_ = getDefaultInstance().getSql();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 建表 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @param value The bytes for sql to set.
       * @return This builder for chaining.
       */
      public Builder setSqlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sql_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.DbTable)
    }

    // @@protoc_insertion_point(class_scope:wcf.DbTable)
    private static final com.iamteer.Wcf.DbTable DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.DbTable();
    }

    public static com.iamteer.Wcf.DbTable getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.DbTable getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DbTablesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.DbTables)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    java.util.List<com.iamteer.Wcf.DbTable> 
        getTablesList();
    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    com.iamteer.Wcf.DbTable getTables(int index);
    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    int getTablesCount();
    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    java.util.List<? extends com.iamteer.Wcf.DbTableOrBuilder> 
        getTablesOrBuilderList();
    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    com.iamteer.Wcf.DbTableOrBuilder getTablesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code wcf.DbTables}
   */
  public static final class DbTables extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.DbTables)
      DbTablesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DbTables.newBuilder() to construct.
    private DbTables(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DbTables() {
      tables_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DbTables(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                tables_ = new java.util.ArrayList<com.iamteer.Wcf.DbTable>();
                mutable_bitField0_ |= 0x00000001;
              }
              tables_.add(
                  input.readMessage(com.iamteer.Wcf.DbTable.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          tables_ = java.util.Collections.unmodifiableList(tables_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_DbTables_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_DbTables_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.DbTables.class, com.iamteer.Wcf.DbTables.Builder.class);
    }

    public static final int TABLES_FIELD_NUMBER = 1;
    private java.util.List<com.iamteer.Wcf.DbTable> tables_;
    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.iamteer.Wcf.DbTable> getTablesList() {
      return tables_;
    }
    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.iamteer.Wcf.DbTableOrBuilder> 
        getTablesOrBuilderList() {
      return tables_;
    }
    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    @java.lang.Override
    public int getTablesCount() {
      return tables_.size();
    }
    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbTable getTables(int index) {
      return tables_.get(index);
    }
    /**
     * <code>repeated .wcf.DbTable tables = 1;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbTableOrBuilder getTablesOrBuilder(
        int index) {
      return tables_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < tables_.size(); i++) {
        output.writeMessage(1, tables_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < tables_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, tables_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.DbTables)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.DbTables other = (com.iamteer.Wcf.DbTables) obj;

      if (!getTablesList()
          .equals(other.getTablesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTablesCount() > 0) {
        hash = (37 * hash) + TABLES_FIELD_NUMBER;
        hash = (53 * hash) + getTablesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.DbTables prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.DbTables}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.DbTables)
        com.iamteer.Wcf.DbTablesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_DbTables_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_DbTables_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.DbTables.class, com.iamteer.Wcf.DbTables.Builder.class);
      }

      // Construct using com.iamteer.Wcf.DbTables.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTablesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (tablesBuilder_ == null) {
          tables_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          tablesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_DbTables_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbTables getDefaultInstanceForType() {
        return com.iamteer.Wcf.DbTables.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbTables build() {
        com.iamteer.Wcf.DbTables result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbTables buildPartial() {
        com.iamteer.Wcf.DbTables result = new com.iamteer.Wcf.DbTables(this);
        int from_bitField0_ = bitField0_;
        if (tablesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            tables_ = java.util.Collections.unmodifiableList(tables_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.tables_ = tables_;
        } else {
          result.tables_ = tablesBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.DbTables other) {
        if (other == com.iamteer.Wcf.DbTables.getDefaultInstance()) return this;
        if (tablesBuilder_ == null) {
          if (!other.tables_.isEmpty()) {
            if (tables_.isEmpty()) {
              tables_ = other.tables_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTablesIsMutable();
              tables_.addAll(other.tables_);
            }
            onChanged();
          }
        } else {
          if (!other.tables_.isEmpty()) {
            if (tablesBuilder_.isEmpty()) {
              tablesBuilder_.dispose();
              tablesBuilder_ = null;
              tables_ = other.tables_;
              bitField0_ = (bitField0_ & ~0x00000001);
              tablesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTablesFieldBuilder() : null;
            } else {
              tablesBuilder_.addAllMessages(other.tables_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.util.List<com.iamteer.Wcf.DbTable> tables_ =
        java.util.Collections.emptyList();
      private void ensureTablesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          tables_ = new java.util.ArrayList<com.iamteer.Wcf.DbTable>(tables_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.iamteer.Wcf.DbTable, com.iamteer.Wcf.DbTable.Builder, com.iamteer.Wcf.DbTableOrBuilder> tablesBuilder_;

      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public java.util.List<com.iamteer.Wcf.DbTable> getTablesList() {
        if (tablesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(tables_);
        } else {
          return tablesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public int getTablesCount() {
        if (tablesBuilder_ == null) {
          return tables_.size();
        } else {
          return tablesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public com.iamteer.Wcf.DbTable getTables(int index) {
        if (tablesBuilder_ == null) {
          return tables_.get(index);
        } else {
          return tablesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public Builder setTables(
          int index, com.iamteer.Wcf.DbTable value) {
        if (tablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTablesIsMutable();
          tables_.set(index, value);
          onChanged();
        } else {
          tablesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public Builder setTables(
          int index, com.iamteer.Wcf.DbTable.Builder builderForValue) {
        if (tablesBuilder_ == null) {
          ensureTablesIsMutable();
          tables_.set(index, builderForValue.build());
          onChanged();
        } else {
          tablesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public Builder addTables(com.iamteer.Wcf.DbTable value) {
        if (tablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTablesIsMutable();
          tables_.add(value);
          onChanged();
        } else {
          tablesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public Builder addTables(
          int index, com.iamteer.Wcf.DbTable value) {
        if (tablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTablesIsMutable();
          tables_.add(index, value);
          onChanged();
        } else {
          tablesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public Builder addTables(
          com.iamteer.Wcf.DbTable.Builder builderForValue) {
        if (tablesBuilder_ == null) {
          ensureTablesIsMutable();
          tables_.add(builderForValue.build());
          onChanged();
        } else {
          tablesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public Builder addTables(
          int index, com.iamteer.Wcf.DbTable.Builder builderForValue) {
        if (tablesBuilder_ == null) {
          ensureTablesIsMutable();
          tables_.add(index, builderForValue.build());
          onChanged();
        } else {
          tablesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public Builder addAllTables(
          java.lang.Iterable<? extends com.iamteer.Wcf.DbTable> values) {
        if (tablesBuilder_ == null) {
          ensureTablesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, tables_);
          onChanged();
        } else {
          tablesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public Builder clearTables() {
        if (tablesBuilder_ == null) {
          tables_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          tablesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public Builder removeTables(int index) {
        if (tablesBuilder_ == null) {
          ensureTablesIsMutable();
          tables_.remove(index);
          onChanged();
        } else {
          tablesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public com.iamteer.Wcf.DbTable.Builder getTablesBuilder(
          int index) {
        return getTablesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public com.iamteer.Wcf.DbTableOrBuilder getTablesOrBuilder(
          int index) {
        if (tablesBuilder_ == null) {
          return tables_.get(index);  } else {
          return tablesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public java.util.List<? extends com.iamteer.Wcf.DbTableOrBuilder> 
           getTablesOrBuilderList() {
        if (tablesBuilder_ != null) {
          return tablesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(tables_);
        }
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public com.iamteer.Wcf.DbTable.Builder addTablesBuilder() {
        return getTablesFieldBuilder().addBuilder(
            com.iamteer.Wcf.DbTable.getDefaultInstance());
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public com.iamteer.Wcf.DbTable.Builder addTablesBuilder(
          int index) {
        return getTablesFieldBuilder().addBuilder(
            index, com.iamteer.Wcf.DbTable.getDefaultInstance());
      }
      /**
       * <code>repeated .wcf.DbTable tables = 1;</code>
       */
      public java.util.List<com.iamteer.Wcf.DbTable.Builder> 
           getTablesBuilderList() {
        return getTablesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.iamteer.Wcf.DbTable, com.iamteer.Wcf.DbTable.Builder, com.iamteer.Wcf.DbTableOrBuilder> 
          getTablesFieldBuilder() {
        if (tablesBuilder_ == null) {
          tablesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.iamteer.Wcf.DbTable, com.iamteer.Wcf.DbTable.Builder, com.iamteer.Wcf.DbTableOrBuilder>(
                  tables_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          tables_ = null;
        }
        return tablesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.DbTables)
    }

    // @@protoc_insertion_point(class_scope:wcf.DbTables)
    private static final com.iamteer.Wcf.DbTables DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.DbTables();
    }

    public static com.iamteer.Wcf.DbTables getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.DbTables getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DbQueryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.DbQuery)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 目标数据库
     * </pre>
     *
     * <code>string db = 1;</code>
     * @return The db.
     */
    java.lang.String getDb();
    /**
     * <pre>
     * 目标数据库
     * </pre>
     *
     * <code>string db = 1;</code>
     * @return The bytes for db.
     */
    com.google.protobuf.ByteString
        getDbBytes();

    /**
     * <pre>
     * 查询 SQL
     * </pre>
     *
     * <code>string sql = 2;</code>
     * @return The sql.
     */
    java.lang.String getSql();
    /**
     * <pre>
     * 查询 SQL
     * </pre>
     *
     * <code>string sql = 2;</code>
     * @return The bytes for sql.
     */
    com.google.protobuf.ByteString
        getSqlBytes();
  }
  /**
   * Protobuf type {@code wcf.DbQuery}
   */
  public static final class DbQuery extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.DbQuery)
      DbQueryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DbQuery.newBuilder() to construct.
    private DbQuery(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DbQuery() {
      db_ = "";
      sql_ = "";
    }

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

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

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

              sql_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_DbQuery_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_DbQuery_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.DbQuery.class, com.iamteer.Wcf.DbQuery.Builder.class);
    }

    public static final int DB_FIELD_NUMBER = 1;
    private volatile java.lang.Object db_;
    /**
     * <pre>
     * 目标数据库
     * </pre>
     *
     * <code>string db = 1;</code>
     * @return The db.
     */
    @java.lang.Override
    public java.lang.String getDb() {
      java.lang.Object ref = db_;
      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();
        db_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 目标数据库
     * </pre>
     *
     * <code>string db = 1;</code>
     * @return The bytes for db.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDbBytes() {
      java.lang.Object ref = db_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        db_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SQL_FIELD_NUMBER = 2;
    private volatile java.lang.Object sql_;
    /**
     * <pre>
     * 查询 SQL
     * </pre>
     *
     * <code>string sql = 2;</code>
     * @return The sql.
     */
    @java.lang.Override
    public java.lang.String getSql() {
      java.lang.Object ref = sql_;
      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();
        sql_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 查询 SQL
     * </pre>
     *
     * <code>string sql = 2;</code>
     * @return The bytes for sql.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSqlBytes() {
      java.lang.Object ref = sql_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sql_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(db_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, db_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sql_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, sql_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(db_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, db_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sql_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, sql_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.DbQuery)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.DbQuery other = (com.iamteer.Wcf.DbQuery) obj;

      if (!getDb()
          .equals(other.getDb())) return false;
      if (!getSql()
          .equals(other.getSql())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DB_FIELD_NUMBER;
      hash = (53 * hash) + getDb().hashCode();
      hash = (37 * hash) + SQL_FIELD_NUMBER;
      hash = (53 * hash) + getSql().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.DbQuery prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.DbQuery}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.DbQuery)
        com.iamteer.Wcf.DbQueryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_DbQuery_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_DbQuery_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.DbQuery.class, com.iamteer.Wcf.DbQuery.Builder.class);
      }

      // Construct using com.iamteer.Wcf.DbQuery.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        sql_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_DbQuery_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbQuery getDefaultInstanceForType() {
        return com.iamteer.Wcf.DbQuery.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbQuery build() {
        com.iamteer.Wcf.DbQuery result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbQuery buildPartial() {
        com.iamteer.Wcf.DbQuery result = new com.iamteer.Wcf.DbQuery(this);
        result.db_ = db_;
        result.sql_ = sql_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.DbQuery other) {
        if (other == com.iamteer.Wcf.DbQuery.getDefaultInstance()) return this;
        if (!other.getDb().isEmpty()) {
          db_ = other.db_;
          onChanged();
        }
        if (!other.getSql().isEmpty()) {
          sql_ = other.sql_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.DbQuery parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.DbQuery) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object db_ = "";
      /**
       * <pre>
       * 目标数据库
       * </pre>
       *
       * <code>string db = 1;</code>
       * @return The db.
       */
      public java.lang.String getDb() {
        java.lang.Object ref = db_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          db_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 目标数据库
       * </pre>
       *
       * <code>string db = 1;</code>
       * @return The bytes for db.
       */
      public com.google.protobuf.ByteString
          getDbBytes() {
        java.lang.Object ref = db_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          db_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 目标数据库
       * </pre>
       *
       * <code>string db = 1;</code>
       * @param value The db to set.
       * @return This builder for chaining.
       */
      public Builder setDb(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        db_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 目标数据库
       * </pre>
       *
       * <code>string db = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDb() {
        
        db_ = getDefaultInstance().getDb();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 目标数据库
       * </pre>
       *
       * <code>string db = 1;</code>
       * @param value The bytes for db to set.
       * @return This builder for chaining.
       */
      public Builder setDbBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        db_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sql_ = "";
      /**
       * <pre>
       * 查询 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @return The sql.
       */
      public java.lang.String getSql() {
        java.lang.Object ref = sql_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sql_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 查询 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @return The bytes for sql.
       */
      public com.google.protobuf.ByteString
          getSqlBytes() {
        java.lang.Object ref = sql_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sql_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 查询 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @param value The sql to set.
       * @return This builder for chaining.
       */
      public Builder setSql(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sql_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 查询 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSql() {
        
        sql_ = getDefaultInstance().getSql();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 查询 SQL
       * </pre>
       *
       * <code>string sql = 2;</code>
       * @param value The bytes for sql to set.
       * @return This builder for chaining.
       */
      public Builder setSqlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sql_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.DbQuery)
    }

    // @@protoc_insertion_point(class_scope:wcf.DbQuery)
    private static final com.iamteer.Wcf.DbQuery DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.DbQuery();
    }

    public static com.iamteer.Wcf.DbQuery getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.DbQuery getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DbFieldOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.DbField)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 字段类型
     * </pre>
     *
     * <code>int32 type = 1;</code>
     * @return The type.
     */
    int getType();

    /**
     * <pre>
     * 字段名称
     * </pre>
     *
     * <code>string column = 2;</code>
     * @return The column.
     */
    java.lang.String getColumn();
    /**
     * <pre>
     * 字段名称
     * </pre>
     *
     * <code>string column = 2;</code>
     * @return The bytes for column.
     */
    com.google.protobuf.ByteString
        getColumnBytes();

    /**
     * <pre>
     * 字段内容
     * </pre>
     *
     * <code>bytes content = 3;</code>
     * @return The content.
     */
    com.google.protobuf.ByteString getContent();
  }
  /**
   * Protobuf type {@code wcf.DbField}
   */
  public static final class DbField extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.DbField)
      DbFieldOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DbField.newBuilder() to construct.
    private DbField(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DbField() {
      column_ = "";
      content_ = com.google.protobuf.ByteString.EMPTY;
    }

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

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

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

              column_ = s;
              break;
            }
            case 26: {

              content_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_DbField_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_DbField_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.DbField.class, com.iamteer.Wcf.DbField.Builder.class);
    }

    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_;
    /**
     * <pre>
     * 字段类型
     * </pre>
     *
     * <code>int32 type = 1;</code>
     * @return The type.
     */
    @java.lang.Override
    public int getType() {
      return type_;
    }

    public static final int COLUMN_FIELD_NUMBER = 2;
    private volatile java.lang.Object column_;
    /**
     * <pre>
     * 字段名称
     * </pre>
     *
     * <code>string column = 2;</code>
     * @return The column.
     */
    @java.lang.Override
    public java.lang.String getColumn() {
      java.lang.Object ref = column_;
      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();
        column_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 字段名称
     * </pre>
     *
     * <code>string column = 2;</code>
     * @return The bytes for column.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getColumnBytes() {
      java.lang.Object ref = column_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        column_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTENT_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString content_;
    /**
     * <pre>
     * 字段内容
     * </pre>
     *
     * <code>bytes content = 3;</code>
     * @return The content.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getContent() {
      return content_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (type_ != 0) {
        output.writeInt32(1, type_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(column_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, column_);
      }
      if (!content_.isEmpty()) {
        output.writeBytes(3, content_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (type_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, type_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(column_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, column_);
      }
      if (!content_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, content_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.DbField)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.DbField other = (com.iamteer.Wcf.DbField) obj;

      if (getType()
          != other.getType()) return false;
      if (!getColumn()
          .equals(other.getColumn())) return false;
      if (!getContent()
          .equals(other.getContent())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType();
      hash = (37 * hash) + COLUMN_FIELD_NUMBER;
      hash = (53 * hash) + getColumn().hashCode();
      hash = (37 * hash) + CONTENT_FIELD_NUMBER;
      hash = (53 * hash) + getContent().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.DbField prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.DbField}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.DbField)
        com.iamteer.Wcf.DbFieldOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_DbField_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_DbField_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.DbField.class, com.iamteer.Wcf.DbField.Builder.class);
      }

      // Construct using com.iamteer.Wcf.DbField.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        column_ = "";

        content_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_DbField_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbField getDefaultInstanceForType() {
        return com.iamteer.Wcf.DbField.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbField build() {
        com.iamteer.Wcf.DbField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbField buildPartial() {
        com.iamteer.Wcf.DbField result = new com.iamteer.Wcf.DbField(this);
        result.type_ = type_;
        result.column_ = column_;
        result.content_ = content_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.DbField other) {
        if (other == com.iamteer.Wcf.DbField.getDefaultInstance()) return this;
        if (other.getType() != 0) {
          setType(other.getType());
        }
        if (!other.getColumn().isEmpty()) {
          column_ = other.column_;
          onChanged();
        }
        if (other.getContent() != com.google.protobuf.ByteString.EMPTY) {
          setContent(other.getContent());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.DbField parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.DbField) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int type_ ;
      /**
       * <pre>
       * 字段类型
       * </pre>
       *
       * <code>int32 type = 1;</code>
       * @return The type.
       */
      @java.lang.Override
      public int getType() {
        return type_;
      }
      /**
       * <pre>
       * 字段类型
       * </pre>
       *
       * <code>int32 type = 1;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(int value) {
        
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 字段类型
       * </pre>
       *
       * <code>int32 type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        
        type_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object column_ = "";
      /**
       * <pre>
       * 字段名称
       * </pre>
       *
       * <code>string column = 2;</code>
       * @return The column.
       */
      public java.lang.String getColumn() {
        java.lang.Object ref = column_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          column_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 字段名称
       * </pre>
       *
       * <code>string column = 2;</code>
       * @return The bytes for column.
       */
      public com.google.protobuf.ByteString
          getColumnBytes() {
        java.lang.Object ref = column_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          column_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 字段名称
       * </pre>
       *
       * <code>string column = 2;</code>
       * @param value The column to set.
       * @return This builder for chaining.
       */
      public Builder setColumn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        column_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 字段名称
       * </pre>
       *
       * <code>string column = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearColumn() {
        
        column_ = getDefaultInstance().getColumn();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 字段名称
       * </pre>
       *
       * <code>string column = 2;</code>
       * @param value The bytes for column to set.
       * @return This builder for chaining.
       */
      public Builder setColumnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        column_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString content_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * 字段内容
       * </pre>
       *
       * <code>bytes content = 3;</code>
       * @return The content.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getContent() {
        return content_;
      }
      /**
       * <pre>
       * 字段内容
       * </pre>
       *
       * <code>bytes content = 3;</code>
       * @param value The content to set.
       * @return This builder for chaining.
       */
      public Builder setContent(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        content_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 字段内容
       * </pre>
       *
       * <code>bytes content = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearContent() {
        
        content_ = getDefaultInstance().getContent();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.DbField)
    }

    // @@protoc_insertion_point(class_scope:wcf.DbField)
    private static final com.iamteer.Wcf.DbField DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.DbField();
    }

    public static com.iamteer.Wcf.DbField getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.DbField getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DbRowOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.DbRow)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    java.util.List<com.iamteer.Wcf.DbField> 
        getFieldsList();
    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    com.iamteer.Wcf.DbField getFields(int index);
    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    int getFieldsCount();
    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    java.util.List<? extends com.iamteer.Wcf.DbFieldOrBuilder> 
        getFieldsOrBuilderList();
    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    com.iamteer.Wcf.DbFieldOrBuilder getFieldsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code wcf.DbRow}
   */
  public static final class DbRow extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.DbRow)
      DbRowOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DbRow.newBuilder() to construct.
    private DbRow(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DbRow() {
      fields_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DbRow(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                fields_ = new java.util.ArrayList<com.iamteer.Wcf.DbField>();
                mutable_bitField0_ |= 0x00000001;
              }
              fields_.add(
                  input.readMessage(com.iamteer.Wcf.DbField.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          fields_ = java.util.Collections.unmodifiableList(fields_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_DbRow_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_DbRow_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.DbRow.class, com.iamteer.Wcf.DbRow.Builder.class);
    }

    public static final int FIELDS_FIELD_NUMBER = 1;
    private java.util.List<com.iamteer.Wcf.DbField> fields_;
    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.iamteer.Wcf.DbField> getFieldsList() {
      return fields_;
    }
    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.iamteer.Wcf.DbFieldOrBuilder> 
        getFieldsOrBuilderList() {
      return fields_;
    }
    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    @java.lang.Override
    public int getFieldsCount() {
      return fields_.size();
    }
    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbField getFields(int index) {
      return fields_.get(index);
    }
    /**
     * <code>repeated .wcf.DbField fields = 1;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbFieldOrBuilder getFieldsOrBuilder(
        int index) {
      return fields_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < fields_.size(); i++) {
        output.writeMessage(1, fields_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < fields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, fields_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.DbRow)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.DbRow other = (com.iamteer.Wcf.DbRow) obj;

      if (!getFieldsList()
          .equals(other.getFieldsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getFieldsCount() > 0) {
        hash = (37 * hash) + FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getFieldsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.DbRow prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.DbRow}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.DbRow)
        com.iamteer.Wcf.DbRowOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_DbRow_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_DbRow_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.DbRow.class, com.iamteer.Wcf.DbRow.Builder.class);
      }

      // Construct using com.iamteer.Wcf.DbRow.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFieldsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_DbRow_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbRow getDefaultInstanceForType() {
        return com.iamteer.Wcf.DbRow.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbRow build() {
        com.iamteer.Wcf.DbRow result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbRow buildPartial() {
        com.iamteer.Wcf.DbRow result = new com.iamteer.Wcf.DbRow(this);
        int from_bitField0_ = bitField0_;
        if (fieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            fields_ = java.util.Collections.unmodifiableList(fields_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.fields_ = fields_;
        } else {
          result.fields_ = fieldsBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.DbRow other) {
        if (other == com.iamteer.Wcf.DbRow.getDefaultInstance()) return this;
        if (fieldsBuilder_ == null) {
          if (!other.fields_.isEmpty()) {
            if (fields_.isEmpty()) {
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFieldsIsMutable();
              fields_.addAll(other.fields_);
            }
            onChanged();
          }
        } else {
          if (!other.fields_.isEmpty()) {
            if (fieldsBuilder_.isEmpty()) {
              fieldsBuilder_.dispose();
              fieldsBuilder_ = null;
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000001);
              fieldsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFieldsFieldBuilder() : null;
            } else {
              fieldsBuilder_.addAllMessages(other.fields_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.util.List<com.iamteer.Wcf.DbField> fields_ =
        java.util.Collections.emptyList();
      private void ensureFieldsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          fields_ = new java.util.ArrayList<com.iamteer.Wcf.DbField>(fields_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.iamteer.Wcf.DbField, com.iamteer.Wcf.DbField.Builder, com.iamteer.Wcf.DbFieldOrBuilder> fieldsBuilder_;

      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public java.util.List<com.iamteer.Wcf.DbField> getFieldsList() {
        if (fieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fields_);
        } else {
          return fieldsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public int getFieldsCount() {
        if (fieldsBuilder_ == null) {
          return fields_.size();
        } else {
          return fieldsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public com.iamteer.Wcf.DbField getFields(int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);
        } else {
          return fieldsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public Builder setFields(
          int index, com.iamteer.Wcf.DbField value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.set(index, value);
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public Builder setFields(
          int index, com.iamteer.Wcf.DbField.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public Builder addFields(com.iamteer.Wcf.DbField value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public Builder addFields(
          int index, com.iamteer.Wcf.DbField value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(index, value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public Builder addFields(
          com.iamteer.Wcf.DbField.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public Builder addFields(
          int index, com.iamteer.Wcf.DbField.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public Builder addAllFields(
          java.lang.Iterable<? extends com.iamteer.Wcf.DbField> values) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fields_);
          onChanged();
        } else {
          fieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public Builder clearFields() {
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public Builder removeFields(int index) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.remove(index);
          onChanged();
        } else {
          fieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public com.iamteer.Wcf.DbField.Builder getFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public com.iamteer.Wcf.DbFieldOrBuilder getFieldsOrBuilder(
          int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);  } else {
          return fieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public java.util.List<? extends com.iamteer.Wcf.DbFieldOrBuilder> 
           getFieldsOrBuilderList() {
        if (fieldsBuilder_ != null) {
          return fieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fields_);
        }
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public com.iamteer.Wcf.DbField.Builder addFieldsBuilder() {
        return getFieldsFieldBuilder().addBuilder(
            com.iamteer.Wcf.DbField.getDefaultInstance());
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public com.iamteer.Wcf.DbField.Builder addFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().addBuilder(
            index, com.iamteer.Wcf.DbField.getDefaultInstance());
      }
      /**
       * <code>repeated .wcf.DbField fields = 1;</code>
       */
      public java.util.List<com.iamteer.Wcf.DbField.Builder> 
           getFieldsBuilderList() {
        return getFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.iamteer.Wcf.DbField, com.iamteer.Wcf.DbField.Builder, com.iamteer.Wcf.DbFieldOrBuilder> 
          getFieldsFieldBuilder() {
        if (fieldsBuilder_ == null) {
          fieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.iamteer.Wcf.DbField, com.iamteer.Wcf.DbField.Builder, com.iamteer.Wcf.DbFieldOrBuilder>(
                  fields_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          fields_ = null;
        }
        return fieldsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.DbRow)
    }

    // @@protoc_insertion_point(class_scope:wcf.DbRow)
    private static final com.iamteer.Wcf.DbRow DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.DbRow();
    }

    public static com.iamteer.Wcf.DbRow getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.DbRow getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DbRowsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.DbRows)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    java.util.List<com.iamteer.Wcf.DbRow> 
        getRowsList();
    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    com.iamteer.Wcf.DbRow getRows(int index);
    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    int getRowsCount();
    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    java.util.List<? extends com.iamteer.Wcf.DbRowOrBuilder> 
        getRowsOrBuilderList();
    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    com.iamteer.Wcf.DbRowOrBuilder getRowsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code wcf.DbRows}
   */
  public static final class DbRows extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.DbRows)
      DbRowsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DbRows.newBuilder() to construct.
    private DbRows(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DbRows() {
      rows_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DbRows(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                rows_ = new java.util.ArrayList<com.iamteer.Wcf.DbRow>();
                mutable_bitField0_ |= 0x00000001;
              }
              rows_.add(
                  input.readMessage(com.iamteer.Wcf.DbRow.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          rows_ = java.util.Collections.unmodifiableList(rows_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_DbRows_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_DbRows_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.DbRows.class, com.iamteer.Wcf.DbRows.Builder.class);
    }

    public static final int ROWS_FIELD_NUMBER = 1;
    private java.util.List<com.iamteer.Wcf.DbRow> rows_;
    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.iamteer.Wcf.DbRow> getRowsList() {
      return rows_;
    }
    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.iamteer.Wcf.DbRowOrBuilder> 
        getRowsOrBuilderList() {
      return rows_;
    }
    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    @java.lang.Override
    public int getRowsCount() {
      return rows_.size();
    }
    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbRow getRows(int index) {
      return rows_.get(index);
    }
    /**
     * <code>repeated .wcf.DbRow rows = 1;</code>
     */
    @java.lang.Override
    public com.iamteer.Wcf.DbRowOrBuilder getRowsOrBuilder(
        int index) {
      return rows_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < rows_.size(); i++) {
        output.writeMessage(1, rows_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < rows_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, rows_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.DbRows)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.DbRows other = (com.iamteer.Wcf.DbRows) obj;

      if (!getRowsList()
          .equals(other.getRowsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getRowsCount() > 0) {
        hash = (37 * hash) + ROWS_FIELD_NUMBER;
        hash = (53 * hash) + getRowsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.DbRows prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.DbRows}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.DbRows)
        com.iamteer.Wcf.DbRowsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_DbRows_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_DbRows_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.DbRows.class, com.iamteer.Wcf.DbRows.Builder.class);
      }

      // Construct using com.iamteer.Wcf.DbRows.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRowsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rowsBuilder_ == null) {
          rows_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          rowsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_DbRows_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbRows getDefaultInstanceForType() {
        return com.iamteer.Wcf.DbRows.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbRows build() {
        com.iamteer.Wcf.DbRows result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DbRows buildPartial() {
        com.iamteer.Wcf.DbRows result = new com.iamteer.Wcf.DbRows(this);
        int from_bitField0_ = bitField0_;
        if (rowsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            rows_ = java.util.Collections.unmodifiableList(rows_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.rows_ = rows_;
        } else {
          result.rows_ = rowsBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.DbRows other) {
        if (other == com.iamteer.Wcf.DbRows.getDefaultInstance()) return this;
        if (rowsBuilder_ == null) {
          if (!other.rows_.isEmpty()) {
            if (rows_.isEmpty()) {
              rows_ = other.rows_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRowsIsMutable();
              rows_.addAll(other.rows_);
            }
            onChanged();
          }
        } else {
          if (!other.rows_.isEmpty()) {
            if (rowsBuilder_.isEmpty()) {
              rowsBuilder_.dispose();
              rowsBuilder_ = null;
              rows_ = other.rows_;
              bitField0_ = (bitField0_ & ~0x00000001);
              rowsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRowsFieldBuilder() : null;
            } else {
              rowsBuilder_.addAllMessages(other.rows_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.util.List<com.iamteer.Wcf.DbRow> rows_ =
        java.util.Collections.emptyList();
      private void ensureRowsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          rows_ = new java.util.ArrayList<com.iamteer.Wcf.DbRow>(rows_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.iamteer.Wcf.DbRow, com.iamteer.Wcf.DbRow.Builder, com.iamteer.Wcf.DbRowOrBuilder> rowsBuilder_;

      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public java.util.List<com.iamteer.Wcf.DbRow> getRowsList() {
        if (rowsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(rows_);
        } else {
          return rowsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public int getRowsCount() {
        if (rowsBuilder_ == null) {
          return rows_.size();
        } else {
          return rowsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public com.iamteer.Wcf.DbRow getRows(int index) {
        if (rowsBuilder_ == null) {
          return rows_.get(index);
        } else {
          return rowsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public Builder setRows(
          int index, com.iamteer.Wcf.DbRow value) {
        if (rowsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRowsIsMutable();
          rows_.set(index, value);
          onChanged();
        } else {
          rowsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public Builder setRows(
          int index, com.iamteer.Wcf.DbRow.Builder builderForValue) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          rows_.set(index, builderForValue.build());
          onChanged();
        } else {
          rowsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public Builder addRows(com.iamteer.Wcf.DbRow value) {
        if (rowsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRowsIsMutable();
          rows_.add(value);
          onChanged();
        } else {
          rowsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public Builder addRows(
          int index, com.iamteer.Wcf.DbRow value) {
        if (rowsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRowsIsMutable();
          rows_.add(index, value);
          onChanged();
        } else {
          rowsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public Builder addRows(
          com.iamteer.Wcf.DbRow.Builder builderForValue) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          rows_.add(builderForValue.build());
          onChanged();
        } else {
          rowsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public Builder addRows(
          int index, com.iamteer.Wcf.DbRow.Builder builderForValue) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          rows_.add(index, builderForValue.build());
          onChanged();
        } else {
          rowsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public Builder addAllRows(
          java.lang.Iterable<? extends com.iamteer.Wcf.DbRow> values) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, rows_);
          onChanged();
        } else {
          rowsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public Builder clearRows() {
        if (rowsBuilder_ == null) {
          rows_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          rowsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public Builder removeRows(int index) {
        if (rowsBuilder_ == null) {
          ensureRowsIsMutable();
          rows_.remove(index);
          onChanged();
        } else {
          rowsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public com.iamteer.Wcf.DbRow.Builder getRowsBuilder(
          int index) {
        return getRowsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public com.iamteer.Wcf.DbRowOrBuilder getRowsOrBuilder(
          int index) {
        if (rowsBuilder_ == null) {
          return rows_.get(index);  } else {
          return rowsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public java.util.List<? extends com.iamteer.Wcf.DbRowOrBuilder> 
           getRowsOrBuilderList() {
        if (rowsBuilder_ != null) {
          return rowsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(rows_);
        }
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public com.iamteer.Wcf.DbRow.Builder addRowsBuilder() {
        return getRowsFieldBuilder().addBuilder(
            com.iamteer.Wcf.DbRow.getDefaultInstance());
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public com.iamteer.Wcf.DbRow.Builder addRowsBuilder(
          int index) {
        return getRowsFieldBuilder().addBuilder(
            index, com.iamteer.Wcf.DbRow.getDefaultInstance());
      }
      /**
       * <code>repeated .wcf.DbRow rows = 1;</code>
       */
      public java.util.List<com.iamteer.Wcf.DbRow.Builder> 
           getRowsBuilderList() {
        return getRowsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.iamteer.Wcf.DbRow, com.iamteer.Wcf.DbRow.Builder, com.iamteer.Wcf.DbRowOrBuilder> 
          getRowsFieldBuilder() {
        if (rowsBuilder_ == null) {
          rowsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.iamteer.Wcf.DbRow, com.iamteer.Wcf.DbRow.Builder, com.iamteer.Wcf.DbRowOrBuilder>(
                  rows_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          rows_ = null;
        }
        return rowsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.DbRows)
    }

    // @@protoc_insertion_point(class_scope:wcf.DbRows)
    private static final com.iamteer.Wcf.DbRows DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.DbRows();
    }

    public static com.iamteer.Wcf.DbRows getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.DbRows getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VerificationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.Verification)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 加密的用户名
     * </pre>
     *
     * <code>string v3 = 1;</code>
     * @return The v3.
     */
    java.lang.String getV3();
    /**
     * <pre>
     * 加密的用户名
     * </pre>
     *
     * <code>string v3 = 1;</code>
     * @return The bytes for v3.
     */
    com.google.protobuf.ByteString
        getV3Bytes();

    /**
     * <pre>
     * Ticket
     * </pre>
     *
     * <code>string v4 = 2;</code>
     * @return The v4.
     */
    java.lang.String getV4();
    /**
     * <pre>
     * Ticket
     * </pre>
     *
     * <code>string v4 = 2;</code>
     * @return The bytes for v4.
     */
    com.google.protobuf.ByteString
        getV4Bytes();

    /**
     * <pre>
     * 添加方式：17 名片，30 扫码
     * </pre>
     *
     * <code>int32 scene = 3;</code>
     * @return The scene.
     */
    int getScene();
  }
  /**
   * Protobuf type {@code wcf.Verification}
   */
  public static final class Verification extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.Verification)
      VerificationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Verification.newBuilder() to construct.
    private Verification(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Verification() {
      v3_ = "";
      v4_ = "";
    }

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

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

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

              v4_ = s;
              break;
            }
            case 24: {

              scene_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_Verification_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_Verification_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.Verification.class, com.iamteer.Wcf.Verification.Builder.class);
    }

    public static final int V3_FIELD_NUMBER = 1;
    private volatile java.lang.Object v3_;
    /**
     * <pre>
     * 加密的用户名
     * </pre>
     *
     * <code>string v3 = 1;</code>
     * @return The v3.
     */
    @java.lang.Override
    public java.lang.String getV3() {
      java.lang.Object ref = v3_;
      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();
        v3_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 加密的用户名
     * </pre>
     *
     * <code>string v3 = 1;</code>
     * @return The bytes for v3.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getV3Bytes() {
      java.lang.Object ref = v3_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        v3_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int V4_FIELD_NUMBER = 2;
    private volatile java.lang.Object v4_;
    /**
     * <pre>
     * Ticket
     * </pre>
     *
     * <code>string v4 = 2;</code>
     * @return The v4.
     */
    @java.lang.Override
    public java.lang.String getV4() {
      java.lang.Object ref = v4_;
      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();
        v4_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Ticket
     * </pre>
     *
     * <code>string v4 = 2;</code>
     * @return The bytes for v4.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getV4Bytes() {
      java.lang.Object ref = v4_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        v4_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SCENE_FIELD_NUMBER = 3;
    private int scene_;
    /**
     * <pre>
     * 添加方式：17 名片，30 扫码
     * </pre>
     *
     * <code>int32 scene = 3;</code>
     * @return The scene.
     */
    @java.lang.Override
    public int getScene() {
      return scene_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(v3_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, v3_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(v4_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, v4_);
      }
      if (scene_ != 0) {
        output.writeInt32(3, scene_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(v3_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, v3_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(v4_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, v4_);
      }
      if (scene_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, scene_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.Verification)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.Verification other = (com.iamteer.Wcf.Verification) obj;

      if (!getV3()
          .equals(other.getV3())) return false;
      if (!getV4()
          .equals(other.getV4())) return false;
      if (getScene()
          != other.getScene()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + V3_FIELD_NUMBER;
      hash = (53 * hash) + getV3().hashCode();
      hash = (37 * hash) + V4_FIELD_NUMBER;
      hash = (53 * hash) + getV4().hashCode();
      hash = (37 * hash) + SCENE_FIELD_NUMBER;
      hash = (53 * hash) + getScene();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.Verification prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.Verification}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.Verification)
        com.iamteer.Wcf.VerificationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_Verification_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_Verification_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.Verification.class, com.iamteer.Wcf.Verification.Builder.class);
      }

      // Construct using com.iamteer.Wcf.Verification.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        v4_ = "";

        scene_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_Verification_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Verification getDefaultInstanceForType() {
        return com.iamteer.Wcf.Verification.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.Verification build() {
        com.iamteer.Wcf.Verification result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Verification buildPartial() {
        com.iamteer.Wcf.Verification result = new com.iamteer.Wcf.Verification(this);
        result.v3_ = v3_;
        result.v4_ = v4_;
        result.scene_ = scene_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.Verification other) {
        if (other == com.iamteer.Wcf.Verification.getDefaultInstance()) return this;
        if (!other.getV3().isEmpty()) {
          v3_ = other.v3_;
          onChanged();
        }
        if (!other.getV4().isEmpty()) {
          v4_ = other.v4_;
          onChanged();
        }
        if (other.getScene() != 0) {
          setScene(other.getScene());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.Verification parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.Verification) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object v3_ = "";
      /**
       * <pre>
       * 加密的用户名
       * </pre>
       *
       * <code>string v3 = 1;</code>
       * @return The v3.
       */
      public java.lang.String getV3() {
        java.lang.Object ref = v3_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          v3_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 加密的用户名
       * </pre>
       *
       * <code>string v3 = 1;</code>
       * @return The bytes for v3.
       */
      public com.google.protobuf.ByteString
          getV3Bytes() {
        java.lang.Object ref = v3_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          v3_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 加密的用户名
       * </pre>
       *
       * <code>string v3 = 1;</code>
       * @param value The v3 to set.
       * @return This builder for chaining.
       */
      public Builder setV3(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        v3_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 加密的用户名
       * </pre>
       *
       * <code>string v3 = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearV3() {
        
        v3_ = getDefaultInstance().getV3();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 加密的用户名
       * </pre>
       *
       * <code>string v3 = 1;</code>
       * @param value The bytes for v3 to set.
       * @return This builder for chaining.
       */
      public Builder setV3Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        v3_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object v4_ = "";
      /**
       * <pre>
       * Ticket
       * </pre>
       *
       * <code>string v4 = 2;</code>
       * @return The v4.
       */
      public java.lang.String getV4() {
        java.lang.Object ref = v4_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          v4_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Ticket
       * </pre>
       *
       * <code>string v4 = 2;</code>
       * @return The bytes for v4.
       */
      public com.google.protobuf.ByteString
          getV4Bytes() {
        java.lang.Object ref = v4_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          v4_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Ticket
       * </pre>
       *
       * <code>string v4 = 2;</code>
       * @param value The v4 to set.
       * @return This builder for chaining.
       */
      public Builder setV4(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        v4_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ticket
       * </pre>
       *
       * <code>string v4 = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearV4() {
        
        v4_ = getDefaultInstance().getV4();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ticket
       * </pre>
       *
       * <code>string v4 = 2;</code>
       * @param value The bytes for v4 to set.
       * @return This builder for chaining.
       */
      public Builder setV4Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        v4_ = value;
        onChanged();
        return this;
      }

      private int scene_ ;
      /**
       * <pre>
       * 添加方式：17 名片，30 扫码
       * </pre>
       *
       * <code>int32 scene = 3;</code>
       * @return The scene.
       */
      @java.lang.Override
      public int getScene() {
        return scene_;
      }
      /**
       * <pre>
       * 添加方式：17 名片，30 扫码
       * </pre>
       *
       * <code>int32 scene = 3;</code>
       * @param value The scene to set.
       * @return This builder for chaining.
       */
      public Builder setScene(int value) {
        
        scene_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 添加方式：17 名片，30 扫码
       * </pre>
       *
       * <code>int32 scene = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearScene() {
        
        scene_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.Verification)
    }

    // @@protoc_insertion_point(class_scope:wcf.Verification)
    private static final com.iamteer.Wcf.Verification DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.Verification();
    }

    public static com.iamteer.Wcf.Verification getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.Verification getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MemberMgmtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.MemberMgmt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 要加的群ID
     * </pre>
     *
     * <code>string roomid = 1;</code>
     * @return The roomid.
     */
    java.lang.String getRoomid();
    /**
     * <pre>
     * 要加的群ID
     * </pre>
     *
     * <code>string roomid = 1;</code>
     * @return The bytes for roomid.
     */
    com.google.protobuf.ByteString
        getRoomidBytes();

    /**
     * <pre>
     * 要加群的人列表，逗号分隔
     * </pre>
     *
     * <code>string wxids = 2;</code>
     * @return The wxids.
     */
    java.lang.String getWxids();
    /**
     * <pre>
     * 要加群的人列表，逗号分隔
     * </pre>
     *
     * <code>string wxids = 2;</code>
     * @return The bytes for wxids.
     */
    com.google.protobuf.ByteString
        getWxidsBytes();
  }
  /**
   * Protobuf type {@code wcf.MemberMgmt}
   */
  public static final class MemberMgmt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.MemberMgmt)
      MemberMgmtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MemberMgmt.newBuilder() to construct.
    private MemberMgmt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MemberMgmt() {
      roomid_ = "";
      wxids_ = "";
    }

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

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

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

              wxids_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_MemberMgmt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_MemberMgmt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.MemberMgmt.class, com.iamteer.Wcf.MemberMgmt.Builder.class);
    }

    public static final int ROOMID_FIELD_NUMBER = 1;
    private volatile java.lang.Object roomid_;
    /**
     * <pre>
     * 要加的群ID
     * </pre>
     *
     * <code>string roomid = 1;</code>
     * @return The roomid.
     */
    @java.lang.Override
    public java.lang.String getRoomid() {
      java.lang.Object ref = roomid_;
      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();
        roomid_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 要加的群ID
     * </pre>
     *
     * <code>string roomid = 1;</code>
     * @return The bytes for roomid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRoomidBytes() {
      java.lang.Object ref = roomid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        roomid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WXIDS_FIELD_NUMBER = 2;
    private volatile java.lang.Object wxids_;
    /**
     * <pre>
     * 要加群的人列表，逗号分隔
     * </pre>
     *
     * <code>string wxids = 2;</code>
     * @return The wxids.
     */
    @java.lang.Override
    public java.lang.String getWxids() {
      java.lang.Object ref = wxids_;
      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();
        wxids_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 要加群的人列表，逗号分隔
     * </pre>
     *
     * <code>string wxids = 2;</code>
     * @return The bytes for wxids.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWxidsBytes() {
      java.lang.Object ref = wxids_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        wxids_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(roomid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, roomid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxids_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, wxids_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(roomid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, roomid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxids_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, wxids_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.MemberMgmt)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.MemberMgmt other = (com.iamteer.Wcf.MemberMgmt) obj;

      if (!getRoomid()
          .equals(other.getRoomid())) return false;
      if (!getWxids()
          .equals(other.getWxids())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ROOMID_FIELD_NUMBER;
      hash = (53 * hash) + getRoomid().hashCode();
      hash = (37 * hash) + WXIDS_FIELD_NUMBER;
      hash = (53 * hash) + getWxids().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.MemberMgmt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.MemberMgmt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.MemberMgmt)
        com.iamteer.Wcf.MemberMgmtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_MemberMgmt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_MemberMgmt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.MemberMgmt.class, com.iamteer.Wcf.MemberMgmt.Builder.class);
      }

      // Construct using com.iamteer.Wcf.MemberMgmt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        wxids_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_MemberMgmt_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.MemberMgmt getDefaultInstanceForType() {
        return com.iamteer.Wcf.MemberMgmt.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.MemberMgmt build() {
        com.iamteer.Wcf.MemberMgmt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.MemberMgmt buildPartial() {
        com.iamteer.Wcf.MemberMgmt result = new com.iamteer.Wcf.MemberMgmt(this);
        result.roomid_ = roomid_;
        result.wxids_ = wxids_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.MemberMgmt other) {
        if (other == com.iamteer.Wcf.MemberMgmt.getDefaultInstance()) return this;
        if (!other.getRoomid().isEmpty()) {
          roomid_ = other.roomid_;
          onChanged();
        }
        if (!other.getWxids().isEmpty()) {
          wxids_ = other.wxids_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.MemberMgmt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.MemberMgmt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object roomid_ = "";
      /**
       * <pre>
       * 要加的群ID
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @return The roomid.
       */
      public java.lang.String getRoomid() {
        java.lang.Object ref = roomid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          roomid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 要加的群ID
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @return The bytes for roomid.
       */
      public com.google.protobuf.ByteString
          getRoomidBytes() {
        java.lang.Object ref = roomid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          roomid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 要加的群ID
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @param value The roomid to set.
       * @return This builder for chaining.
       */
      public Builder setRoomid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        roomid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要加的群ID
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRoomid() {
        
        roomid_ = getDefaultInstance().getRoomid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要加的群ID
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @param value The bytes for roomid to set.
       * @return This builder for chaining.
       */
      public Builder setRoomidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        roomid_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object wxids_ = "";
      /**
       * <pre>
       * 要加群的人列表，逗号分隔
       * </pre>
       *
       * <code>string wxids = 2;</code>
       * @return The wxids.
       */
      public java.lang.String getWxids() {
        java.lang.Object ref = wxids_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          wxids_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 要加群的人列表，逗号分隔
       * </pre>
       *
       * <code>string wxids = 2;</code>
       * @return The bytes for wxids.
       */
      public com.google.protobuf.ByteString
          getWxidsBytes() {
        java.lang.Object ref = wxids_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          wxids_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 要加群的人列表，逗号分隔
       * </pre>
       *
       * <code>string wxids = 2;</code>
       * @param value The wxids to set.
       * @return This builder for chaining.
       */
      public Builder setWxids(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        wxids_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要加群的人列表，逗号分隔
       * </pre>
       *
       * <code>string wxids = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearWxids() {
        
        wxids_ = getDefaultInstance().getWxids();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 要加群的人列表，逗号分隔
       * </pre>
       *
       * <code>string wxids = 2;</code>
       * @param value The bytes for wxids to set.
       * @return This builder for chaining.
       */
      public Builder setWxidsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        wxids_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.MemberMgmt)
    }

    // @@protoc_insertion_point(class_scope:wcf.MemberMgmt)
    private static final com.iamteer.Wcf.MemberMgmt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.MemberMgmt();
    }

    public static com.iamteer.Wcf.MemberMgmt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.MemberMgmt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UserInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.UserInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 微信ID
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The wxid.
     */
    java.lang.String getWxid();
    /**
     * <pre>
     * 微信ID
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The bytes for wxid.
     */
    com.google.protobuf.ByteString
        getWxidBytes();

    /**
     * <pre>
     * 昵称
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * 昵称
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * 手机号
     * </pre>
     *
     * <code>string mobile = 3;</code>
     * @return The mobile.
     */
    java.lang.String getMobile();
    /**
     * <pre>
     * 手机号
     * </pre>
     *
     * <code>string mobile = 3;</code>
     * @return The bytes for mobile.
     */
    com.google.protobuf.ByteString
        getMobileBytes();

    /**
     * <pre>
     * 文件/图片等父路径
     * </pre>
     *
     * <code>string home = 4;</code>
     * @return The home.
     */
    java.lang.String getHome();
    /**
     * <pre>
     * 文件/图片等父路径
     * </pre>
     *
     * <code>string home = 4;</code>
     * @return The bytes for home.
     */
    com.google.protobuf.ByteString
        getHomeBytes();
  }
  /**
   * Protobuf type {@code wcf.UserInfo}
   */
  public static final class UserInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.UserInfo)
      UserInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UserInfo.newBuilder() to construct.
    private UserInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UserInfo() {
      wxid_ = "";
      name_ = "";
      mobile_ = "";
      home_ = "";
    }

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

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

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

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

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

              home_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_UserInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_UserInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.UserInfo.class, com.iamteer.Wcf.UserInfo.Builder.class);
    }

    public static final int WXID_FIELD_NUMBER = 1;
    private volatile java.lang.Object wxid_;
    /**
     * <pre>
     * 微信ID
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The wxid.
     */
    @java.lang.Override
    public java.lang.String getWxid() {
      java.lang.Object ref = wxid_;
      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();
        wxid_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 微信ID
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The bytes for wxid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWxidBytes() {
      java.lang.Object ref = wxid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        wxid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * 昵称
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    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();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 昵称
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int MOBILE_FIELD_NUMBER = 3;
    private volatile java.lang.Object mobile_;
    /**
     * <pre>
     * 手机号
     * </pre>
     *
     * <code>string mobile = 3;</code>
     * @return The mobile.
     */
    @java.lang.Override
    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();
        mobile_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 手机号
     * </pre>
     *
     * <code>string mobile = 3;</code>
     * @return The bytes for mobile.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int HOME_FIELD_NUMBER = 4;
    private volatile java.lang.Object home_;
    /**
     * <pre>
     * 文件/图片等父路径
     * </pre>
     *
     * <code>string home = 4;</code>
     * @return The home.
     */
    @java.lang.Override
    public java.lang.String getHome() {
      java.lang.Object ref = home_;
      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();
        home_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 文件/图片等父路径
     * </pre>
     *
     * <code>string home = 4;</code>
     * @return The bytes for home.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHomeBytes() {
      java.lang.Object ref = home_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        home_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, wxid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mobile_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, mobile_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(home_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, home_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, wxid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mobile_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, mobile_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(home_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, home_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.UserInfo)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.UserInfo other = (com.iamteer.Wcf.UserInfo) obj;

      if (!getWxid()
          .equals(other.getWxid())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getMobile()
          .equals(other.getMobile())) return false;
      if (!getHome()
          .equals(other.getHome())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + WXID_FIELD_NUMBER;
      hash = (53 * hash) + getWxid().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + MOBILE_FIELD_NUMBER;
      hash = (53 * hash) + getMobile().hashCode();
      hash = (37 * hash) + HOME_FIELD_NUMBER;
      hash = (53 * hash) + getHome().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.UserInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.UserInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.UserInfo)
        com.iamteer.Wcf.UserInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_UserInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_UserInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.UserInfo.class, com.iamteer.Wcf.UserInfo.Builder.class);
      }

      // Construct using com.iamteer.Wcf.UserInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        name_ = "";

        mobile_ = "";

        home_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_UserInfo_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.UserInfo getDefaultInstanceForType() {
        return com.iamteer.Wcf.UserInfo.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.UserInfo build() {
        com.iamteer.Wcf.UserInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.UserInfo buildPartial() {
        com.iamteer.Wcf.UserInfo result = new com.iamteer.Wcf.UserInfo(this);
        result.wxid_ = wxid_;
        result.name_ = name_;
        result.mobile_ = mobile_;
        result.home_ = home_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.UserInfo other) {
        if (other == com.iamteer.Wcf.UserInfo.getDefaultInstance()) return this;
        if (!other.getWxid().isEmpty()) {
          wxid_ = other.wxid_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getMobile().isEmpty()) {
          mobile_ = other.mobile_;
          onChanged();
        }
        if (!other.getHome().isEmpty()) {
          home_ = other.home_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.UserInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.UserInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object wxid_ = "";
      /**
       * <pre>
       * 微信ID
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @return The wxid.
       */
      public java.lang.String getWxid() {
        java.lang.Object ref = wxid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          wxid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 微信ID
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @return The bytes for wxid.
       */
      public com.google.protobuf.ByteString
          getWxidBytes() {
        java.lang.Object ref = wxid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          wxid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 微信ID
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @param value The wxid to set.
       * @return This builder for chaining.
       */
      public Builder setWxid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        wxid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 微信ID
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearWxid() {
        
        wxid_ = getDefaultInstance().getWxid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 微信ID
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @param value The bytes for wxid to set.
       * @return This builder for chaining.
       */
      public Builder setWxidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        wxid_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * 昵称
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 昵称
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      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;
        }
      }
      /**
       * <pre>
       * 昵称
       * </pre>
       *
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 昵称
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 昵称
       * </pre>
       *
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object mobile_ = "";
      /**
       * <pre>
       * 手机号
       * </pre>
       *
       * <code>string mobile = 3;</code>
       * @return The mobile.
       */
      public java.lang.String getMobile() {
        java.lang.Object ref = mobile_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          mobile_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 手机号
       * </pre>
       *
       * <code>string mobile = 3;</code>
       * @return The bytes for mobile.
       */
      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;
        }
      }
      /**
       * <pre>
       * 手机号
       * </pre>
       *
       * <code>string mobile = 3;</code>
       * @param value The mobile to set.
       * @return This builder for chaining.
       */
      public Builder setMobile(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        mobile_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 手机号
       * </pre>
       *
       * <code>string mobile = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMobile() {
        
        mobile_ = getDefaultInstance().getMobile();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 手机号
       * </pre>
       *
       * <code>string mobile = 3;</code>
       * @param value The bytes for mobile to set.
       * @return This builder for chaining.
       */
      public Builder setMobileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        mobile_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object home_ = "";
      /**
       * <pre>
       * 文件/图片等父路径
       * </pre>
       *
       * <code>string home = 4;</code>
       * @return The home.
       */
      public java.lang.String getHome() {
        java.lang.Object ref = home_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          home_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 文件/图片等父路径
       * </pre>
       *
       * <code>string home = 4;</code>
       * @return The bytes for home.
       */
      public com.google.protobuf.ByteString
          getHomeBytes() {
        java.lang.Object ref = home_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          home_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 文件/图片等父路径
       * </pre>
       *
       * <code>string home = 4;</code>
       * @param value The home to set.
       * @return This builder for chaining.
       */
      public Builder setHome(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        home_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 文件/图片等父路径
       * </pre>
       *
       * <code>string home = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearHome() {
        
        home_ = getDefaultInstance().getHome();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 文件/图片等父路径
       * </pre>
       *
       * <code>string home = 4;</code>
       * @param value The bytes for home to set.
       * @return This builder for chaining.
       */
      public Builder setHomeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        home_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.UserInfo)
    }

    // @@protoc_insertion_point(class_scope:wcf.UserInfo)
    private static final com.iamteer.Wcf.UserInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.UserInfo();
    }

    public static com.iamteer.Wcf.UserInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.UserInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DecPathOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.DecPath)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 源路径
     * </pre>
     *
     * <code>string src = 1;</code>
     * @return The src.
     */
    java.lang.String getSrc();
    /**
     * <pre>
     * 源路径
     * </pre>
     *
     * <code>string src = 1;</code>
     * @return The bytes for src.
     */
    com.google.protobuf.ByteString
        getSrcBytes();

    /**
     * <pre>
     * 目标路径
     * </pre>
     *
     * <code>string dst = 2;</code>
     * @return The dst.
     */
    java.lang.String getDst();
    /**
     * <pre>
     * 目标路径
     * </pre>
     *
     * <code>string dst = 2;</code>
     * @return The bytes for dst.
     */
    com.google.protobuf.ByteString
        getDstBytes();
  }
  /**
   * Protobuf type {@code wcf.DecPath}
   */
  public static final class DecPath extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.DecPath)
      DecPathOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DecPath.newBuilder() to construct.
    private DecPath(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DecPath() {
      src_ = "";
      dst_ = "";
    }

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

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

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

              dst_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_DecPath_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_DecPath_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.DecPath.class, com.iamteer.Wcf.DecPath.Builder.class);
    }

    public static final int SRC_FIELD_NUMBER = 1;
    private volatile java.lang.Object src_;
    /**
     * <pre>
     * 源路径
     * </pre>
     *
     * <code>string src = 1;</code>
     * @return The src.
     */
    @java.lang.Override
    public java.lang.String getSrc() {
      java.lang.Object ref = src_;
      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();
        src_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 源路径
     * </pre>
     *
     * <code>string src = 1;</code>
     * @return The bytes for src.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSrcBytes() {
      java.lang.Object ref = src_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        src_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DST_FIELD_NUMBER = 2;
    private volatile java.lang.Object dst_;
    /**
     * <pre>
     * 目标路径
     * </pre>
     *
     * <code>string dst = 2;</code>
     * @return The dst.
     */
    @java.lang.Override
    public java.lang.String getDst() {
      java.lang.Object ref = dst_;
      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();
        dst_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 目标路径
     * </pre>
     *
     * <code>string dst = 2;</code>
     * @return The bytes for dst.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDstBytes() {
      java.lang.Object ref = dst_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dst_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(src_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, src_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dst_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dst_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(src_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, src_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dst_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dst_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.DecPath)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.DecPath other = (com.iamteer.Wcf.DecPath) obj;

      if (!getSrc()
          .equals(other.getSrc())) return false;
      if (!getDst()
          .equals(other.getDst())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SRC_FIELD_NUMBER;
      hash = (53 * hash) + getSrc().hashCode();
      hash = (37 * hash) + DST_FIELD_NUMBER;
      hash = (53 * hash) + getDst().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.DecPath prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.DecPath}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.DecPath)
        com.iamteer.Wcf.DecPathOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_DecPath_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_DecPath_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.DecPath.class, com.iamteer.Wcf.DecPath.Builder.class);
      }

      // Construct using com.iamteer.Wcf.DecPath.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        dst_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_DecPath_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DecPath getDefaultInstanceForType() {
        return com.iamteer.Wcf.DecPath.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.DecPath build() {
        com.iamteer.Wcf.DecPath result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.DecPath buildPartial() {
        com.iamteer.Wcf.DecPath result = new com.iamteer.Wcf.DecPath(this);
        result.src_ = src_;
        result.dst_ = dst_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.DecPath other) {
        if (other == com.iamteer.Wcf.DecPath.getDefaultInstance()) return this;
        if (!other.getSrc().isEmpty()) {
          src_ = other.src_;
          onChanged();
        }
        if (!other.getDst().isEmpty()) {
          dst_ = other.dst_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.DecPath parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.DecPath) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object src_ = "";
      /**
       * <pre>
       * 源路径
       * </pre>
       *
       * <code>string src = 1;</code>
       * @return The src.
       */
      public java.lang.String getSrc() {
        java.lang.Object ref = src_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          src_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 源路径
       * </pre>
       *
       * <code>string src = 1;</code>
       * @return The bytes for src.
       */
      public com.google.protobuf.ByteString
          getSrcBytes() {
        java.lang.Object ref = src_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          src_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 源路径
       * </pre>
       *
       * <code>string src = 1;</code>
       * @param value The src to set.
       * @return This builder for chaining.
       */
      public Builder setSrc(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        src_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 源路径
       * </pre>
       *
       * <code>string src = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSrc() {
        
        src_ = getDefaultInstance().getSrc();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 源路径
       * </pre>
       *
       * <code>string src = 1;</code>
       * @param value The bytes for src to set.
       * @return This builder for chaining.
       */
      public Builder setSrcBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        src_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object dst_ = "";
      /**
       * <pre>
       * 目标路径
       * </pre>
       *
       * <code>string dst = 2;</code>
       * @return The dst.
       */
      public java.lang.String getDst() {
        java.lang.Object ref = dst_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dst_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 目标路径
       * </pre>
       *
       * <code>string dst = 2;</code>
       * @return The bytes for dst.
       */
      public com.google.protobuf.ByteString
          getDstBytes() {
        java.lang.Object ref = dst_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dst_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 目标路径
       * </pre>
       *
       * <code>string dst = 2;</code>
       * @param value The dst to set.
       * @return This builder for chaining.
       */
      public Builder setDst(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        dst_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 目标路径
       * </pre>
       *
       * <code>string dst = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDst() {
        
        dst_ = getDefaultInstance().getDst();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 目标路径
       * </pre>
       *
       * <code>string dst = 2;</code>
       * @param value The bytes for dst to set.
       * @return This builder for chaining.
       */
      public Builder setDstBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        dst_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.DecPath)
    }

    // @@protoc_insertion_point(class_scope:wcf.DecPath)
    private static final com.iamteer.Wcf.DecPath DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.DecPath();
    }

    public static com.iamteer.Wcf.DecPath getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.DecPath getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransferOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.Transfer)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 转账人
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The wxid.
     */
    java.lang.String getWxid();
    /**
     * <pre>
     * 转账人
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The bytes for wxid.
     */
    com.google.protobuf.ByteString
        getWxidBytes();

    /**
     * <pre>
     * 转账id transferid
     * </pre>
     *
     * <code>string tfid = 2;</code>
     * @return The tfid.
     */
    java.lang.String getTfid();
    /**
     * <pre>
     * 转账id transferid
     * </pre>
     *
     * <code>string tfid = 2;</code>
     * @return The bytes for tfid.
     */
    com.google.protobuf.ByteString
        getTfidBytes();

    /**
     * <pre>
     * Transaction id
     * </pre>
     *
     * <code>string taid = 3;</code>
     * @return The taid.
     */
    java.lang.String getTaid();
    /**
     * <pre>
     * Transaction id
     * </pre>
     *
     * <code>string taid = 3;</code>
     * @return The bytes for taid.
     */
    com.google.protobuf.ByteString
        getTaidBytes();
  }
  /**
   * Protobuf type {@code wcf.Transfer}
   */
  public static final class Transfer extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.Transfer)
      TransferOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Transfer.newBuilder() to construct.
    private Transfer(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Transfer() {
      wxid_ = "";
      tfid_ = "";
      taid_ = "";
    }

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

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

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

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

              taid_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_Transfer_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_Transfer_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.Transfer.class, com.iamteer.Wcf.Transfer.Builder.class);
    }

    public static final int WXID_FIELD_NUMBER = 1;
    private volatile java.lang.Object wxid_;
    /**
     * <pre>
     * 转账人
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The wxid.
     */
    @java.lang.Override
    public java.lang.String getWxid() {
      java.lang.Object ref = wxid_;
      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();
        wxid_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 转账人
     * </pre>
     *
     * <code>string wxid = 1;</code>
     * @return The bytes for wxid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWxidBytes() {
      java.lang.Object ref = wxid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        wxid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TFID_FIELD_NUMBER = 2;
    private volatile java.lang.Object tfid_;
    /**
     * <pre>
     * 转账id transferid
     * </pre>
     *
     * <code>string tfid = 2;</code>
     * @return The tfid.
     */
    @java.lang.Override
    public java.lang.String getTfid() {
      java.lang.Object ref = tfid_;
      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();
        tfid_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 转账id transferid
     * </pre>
     *
     * <code>string tfid = 2;</code>
     * @return The bytes for tfid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTfidBytes() {
      java.lang.Object ref = tfid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        tfid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TAID_FIELD_NUMBER = 3;
    private volatile java.lang.Object taid_;
    /**
     * <pre>
     * Transaction id
     * </pre>
     *
     * <code>string taid = 3;</code>
     * @return The taid.
     */
    @java.lang.Override
    public java.lang.String getTaid() {
      java.lang.Object ref = taid_;
      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();
        taid_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Transaction id
     * </pre>
     *
     * <code>string taid = 3;</code>
     * @return The bytes for taid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTaidBytes() {
      java.lang.Object ref = taid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        taid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, wxid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tfid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, tfid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(taid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, taid_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, wxid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tfid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, tfid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(taid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, taid_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.Transfer)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.Transfer other = (com.iamteer.Wcf.Transfer) obj;

      if (!getWxid()
          .equals(other.getWxid())) return false;
      if (!getTfid()
          .equals(other.getTfid())) return false;
      if (!getTaid()
          .equals(other.getTaid())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + WXID_FIELD_NUMBER;
      hash = (53 * hash) + getWxid().hashCode();
      hash = (37 * hash) + TFID_FIELD_NUMBER;
      hash = (53 * hash) + getTfid().hashCode();
      hash = (37 * hash) + TAID_FIELD_NUMBER;
      hash = (53 * hash) + getTaid().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.Transfer prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.Transfer}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.Transfer)
        com.iamteer.Wcf.TransferOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_Transfer_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_Transfer_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.Transfer.class, com.iamteer.Wcf.Transfer.Builder.class);
      }

      // Construct using com.iamteer.Wcf.Transfer.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        tfid_ = "";

        taid_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_Transfer_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Transfer getDefaultInstanceForType() {
        return com.iamteer.Wcf.Transfer.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.Transfer build() {
        com.iamteer.Wcf.Transfer result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.Transfer buildPartial() {
        com.iamteer.Wcf.Transfer result = new com.iamteer.Wcf.Transfer(this);
        result.wxid_ = wxid_;
        result.tfid_ = tfid_;
        result.taid_ = taid_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.Transfer other) {
        if (other == com.iamteer.Wcf.Transfer.getDefaultInstance()) return this;
        if (!other.getWxid().isEmpty()) {
          wxid_ = other.wxid_;
          onChanged();
        }
        if (!other.getTfid().isEmpty()) {
          tfid_ = other.tfid_;
          onChanged();
        }
        if (!other.getTaid().isEmpty()) {
          taid_ = other.taid_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.Transfer parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.Transfer) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object wxid_ = "";
      /**
       * <pre>
       * 转账人
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @return The wxid.
       */
      public java.lang.String getWxid() {
        java.lang.Object ref = wxid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          wxid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 转账人
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @return The bytes for wxid.
       */
      public com.google.protobuf.ByteString
          getWxidBytes() {
        java.lang.Object ref = wxid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          wxid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 转账人
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @param value The wxid to set.
       * @return This builder for chaining.
       */
      public Builder setWxid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        wxid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 转账人
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearWxid() {
        
        wxid_ = getDefaultInstance().getWxid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 转账人
       * </pre>
       *
       * <code>string wxid = 1;</code>
       * @param value The bytes for wxid to set.
       * @return This builder for chaining.
       */
      public Builder setWxidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        wxid_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object tfid_ = "";
      /**
       * <pre>
       * 转账id transferid
       * </pre>
       *
       * <code>string tfid = 2;</code>
       * @return The tfid.
       */
      public java.lang.String getTfid() {
        java.lang.Object ref = tfid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          tfid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 转账id transferid
       * </pre>
       *
       * <code>string tfid = 2;</code>
       * @return The bytes for tfid.
       */
      public com.google.protobuf.ByteString
          getTfidBytes() {
        java.lang.Object ref = tfid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tfid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 转账id transferid
       * </pre>
       *
       * <code>string tfid = 2;</code>
       * @param value The tfid to set.
       * @return This builder for chaining.
       */
      public Builder setTfid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        tfid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 转账id transferid
       * </pre>
       *
       * <code>string tfid = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTfid() {
        
        tfid_ = getDefaultInstance().getTfid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 转账id transferid
       * </pre>
       *
       * <code>string tfid = 2;</code>
       * @param value The bytes for tfid to set.
       * @return This builder for chaining.
       */
      public Builder setTfidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        tfid_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object taid_ = "";
      /**
       * <pre>
       * Transaction id
       * </pre>
       *
       * <code>string taid = 3;</code>
       * @return The taid.
       */
      public java.lang.String getTaid() {
        java.lang.Object ref = taid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          taid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Transaction id
       * </pre>
       *
       * <code>string taid = 3;</code>
       * @return The bytes for taid.
       */
      public com.google.protobuf.ByteString
          getTaidBytes() {
        java.lang.Object ref = taid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          taid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Transaction id
       * </pre>
       *
       * <code>string taid = 3;</code>
       * @param value The taid to set.
       * @return This builder for chaining.
       */
      public Builder setTaid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        taid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Transaction id
       * </pre>
       *
       * <code>string taid = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTaid() {
        
        taid_ = getDefaultInstance().getTaid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Transaction id
       * </pre>
       *
       * <code>string taid = 3;</code>
       * @param value The bytes for taid to set.
       * @return This builder for chaining.
       */
      public Builder setTaidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        taid_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.Transfer)
    }

    // @@protoc_insertion_point(class_scope:wcf.Transfer)
    private static final com.iamteer.Wcf.Transfer DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.Transfer();
    }

    public static com.iamteer.Wcf.Transfer getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.Transfer getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AttachMsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.AttachMsg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 消息 id
     * </pre>
     *
     * <code>uint64 id = 1 [jstype = JS_STRING];</code>
     * @return The id.
     */
    long getId();

    /**
     * <pre>
     * 消息中的 thumb
     * </pre>
     *
     * <code>string thumb = 2;</code>
     * @return The thumb.
     */
    java.lang.String getThumb();
    /**
     * <pre>
     * 消息中的 thumb
     * </pre>
     *
     * <code>string thumb = 2;</code>
     * @return The bytes for thumb.
     */
    com.google.protobuf.ByteString
        getThumbBytes();

    /**
     * <pre>
     * 消息中的 extra
     * </pre>
     *
     * <code>string extra = 3;</code>
     * @return The extra.
     */
    java.lang.String getExtra();
    /**
     * <pre>
     * 消息中的 extra
     * </pre>
     *
     * <code>string extra = 3;</code>
     * @return The bytes for extra.
     */
    com.google.protobuf.ByteString
        getExtraBytes();
  }
  /**
   * Protobuf type {@code wcf.AttachMsg}
   */
  public static final class AttachMsg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.AttachMsg)
      AttachMsgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AttachMsg.newBuilder() to construct.
    private AttachMsg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AttachMsg() {
      thumb_ = "";
      extra_ = "";
    }

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

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

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

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

              extra_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_AttachMsg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_AttachMsg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.AttachMsg.class, com.iamteer.Wcf.AttachMsg.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private long id_;
    /**
     * <pre>
     * 消息 id
     * </pre>
     *
     * <code>uint64 id = 1 [jstype = JS_STRING];</code>
     * @return The id.
     */
    @java.lang.Override
    public long getId() {
      return id_;
    }

    public static final int THUMB_FIELD_NUMBER = 2;
    private volatile java.lang.Object thumb_;
    /**
     * <pre>
     * 消息中的 thumb
     * </pre>
     *
     * <code>string thumb = 2;</code>
     * @return The thumb.
     */
    @java.lang.Override
    public java.lang.String getThumb() {
      java.lang.Object ref = thumb_;
      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();
        thumb_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息中的 thumb
     * </pre>
     *
     * <code>string thumb = 2;</code>
     * @return The bytes for thumb.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getThumbBytes() {
      java.lang.Object ref = thumb_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        thumb_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTRA_FIELD_NUMBER = 3;
    private volatile java.lang.Object extra_;
    /**
     * <pre>
     * 消息中的 extra
     * </pre>
     *
     * <code>string extra = 3;</code>
     * @return The extra.
     */
    @java.lang.Override
    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();
        extra_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息中的 extra
     * </pre>
     *
     * <code>string extra = 3;</code>
     * @return The bytes for extra.
     */
    @java.lang.Override
    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 byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0L) {
        output.writeUInt64(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(thumb_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, thumb_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(extra_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, extra_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (id_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(thumb_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, thumb_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(extra_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, extra_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.AttachMsg)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.AttachMsg other = (com.iamteer.Wcf.AttachMsg) obj;

      if (getId()
          != other.getId()) return false;
      if (!getThumb()
          .equals(other.getThumb())) return false;
      if (!getExtra()
          .equals(other.getExtra())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getId());
      hash = (37 * hash) + THUMB_FIELD_NUMBER;
      hash = (53 * hash) + getThumb().hashCode();
      hash = (37 * hash) + EXTRA_FIELD_NUMBER;
      hash = (53 * hash) + getExtra().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.AttachMsg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.AttachMsg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.AttachMsg)
        com.iamteer.Wcf.AttachMsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_AttachMsg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_AttachMsg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.AttachMsg.class, com.iamteer.Wcf.AttachMsg.Builder.class);
      }

      // Construct using com.iamteer.Wcf.AttachMsg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        thumb_ = "";

        extra_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_AttachMsg_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.AttachMsg getDefaultInstanceForType() {
        return com.iamteer.Wcf.AttachMsg.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.AttachMsg build() {
        com.iamteer.Wcf.AttachMsg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.AttachMsg buildPartial() {
        com.iamteer.Wcf.AttachMsg result = new com.iamteer.Wcf.AttachMsg(this);
        result.id_ = id_;
        result.thumb_ = thumb_;
        result.extra_ = extra_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.AttachMsg other) {
        if (other == com.iamteer.Wcf.AttachMsg.getDefaultInstance()) return this;
        if (other.getId() != 0L) {
          setId(other.getId());
        }
        if (!other.getThumb().isEmpty()) {
          thumb_ = other.thumb_;
          onChanged();
        }
        if (!other.getExtra().isEmpty()) {
          extra_ = other.extra_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.AttachMsg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.AttachMsg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long id_ ;
      /**
       * <pre>
       * 消息 id
       * </pre>
       *
       * <code>uint64 id = 1 [jstype = JS_STRING];</code>
       * @return The id.
       */
      @java.lang.Override
      public long getId() {
        return id_;
      }
      /**
       * <pre>
       * 消息 id
       * </pre>
       *
       * <code>uint64 id = 1 [jstype = JS_STRING];</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(long value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息 id
       * </pre>
       *
       * <code>uint64 id = 1 [jstype = JS_STRING];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object thumb_ = "";
      /**
       * <pre>
       * 消息中的 thumb
       * </pre>
       *
       * <code>string thumb = 2;</code>
       * @return The thumb.
       */
      public java.lang.String getThumb() {
        java.lang.Object ref = thumb_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          thumb_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 消息中的 thumb
       * </pre>
       *
       * <code>string thumb = 2;</code>
       * @return The bytes for thumb.
       */
      public com.google.protobuf.ByteString
          getThumbBytes() {
        java.lang.Object ref = thumb_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          thumb_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息中的 thumb
       * </pre>
       *
       * <code>string thumb = 2;</code>
       * @param value The thumb to set.
       * @return This builder for chaining.
       */
      public Builder setThumb(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        thumb_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息中的 thumb
       * </pre>
       *
       * <code>string thumb = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearThumb() {
        
        thumb_ = getDefaultInstance().getThumb();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息中的 thumb
       * </pre>
       *
       * <code>string thumb = 2;</code>
       * @param value The bytes for thumb to set.
       * @return This builder for chaining.
       */
      public Builder setThumbBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        thumb_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object extra_ = "";
      /**
       * <pre>
       * 消息中的 extra
       * </pre>
       *
       * <code>string extra = 3;</code>
       * @return The extra.
       */
      public java.lang.String getExtra() {
        java.lang.Object ref = extra_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          extra_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 消息中的 extra
       * </pre>
       *
       * <code>string extra = 3;</code>
       * @return The bytes for extra.
       */
      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;
        }
      }
      /**
       * <pre>
       * 消息中的 extra
       * </pre>
       *
       * <code>string extra = 3;</code>
       * @param value The extra to set.
       * @return This builder for chaining.
       */
      public Builder setExtra(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        extra_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息中的 extra
       * </pre>
       *
       * <code>string extra = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearExtra() {
        
        extra_ = getDefaultInstance().getExtra();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息中的 extra
       * </pre>
       *
       * <code>string extra = 3;</code>
       * @param value The bytes for extra to set.
       * @return This builder for chaining.
       */
      public Builder setExtraBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        extra_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.AttachMsg)
    }

    // @@protoc_insertion_point(class_scope:wcf.AttachMsg)
    private static final com.iamteer.Wcf.AttachMsg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.AttachMsg();
    }

    public static com.iamteer.Wcf.AttachMsg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.AttachMsg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AudioMsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.AudioMsg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 语音消息 id
     * </pre>
     *
     * <code>uint64 id = 1 [jstype = JS_STRING];</code>
     * @return The id.
     */
    long getId();

    /**
     * <pre>
     * 存放目录
     * </pre>
     *
     * <code>string dir = 2;</code>
     * @return The dir.
     */
    java.lang.String getDir();
    /**
     * <pre>
     * 存放目录
     * </pre>
     *
     * <code>string dir = 2;</code>
     * @return The bytes for dir.
     */
    com.google.protobuf.ByteString
        getDirBytes();
  }
  /**
   * Protobuf type {@code wcf.AudioMsg}
   */
  public static final class AudioMsg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.AudioMsg)
      AudioMsgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AudioMsg.newBuilder() to construct.
    private AudioMsg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AudioMsg() {
      dir_ = "";
    }

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

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

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

              dir_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_AudioMsg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_AudioMsg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.AudioMsg.class, com.iamteer.Wcf.AudioMsg.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private long id_;
    /**
     * <pre>
     * 语音消息 id
     * </pre>
     *
     * <code>uint64 id = 1 [jstype = JS_STRING];</code>
     * @return The id.
     */
    @java.lang.Override
    public long getId() {
      return id_;
    }

    public static final int DIR_FIELD_NUMBER = 2;
    private volatile java.lang.Object dir_;
    /**
     * <pre>
     * 存放目录
     * </pre>
     *
     * <code>string dir = 2;</code>
     * @return The dir.
     */
    @java.lang.Override
    public java.lang.String getDir() {
      java.lang.Object ref = dir_;
      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();
        dir_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 存放目录
     * </pre>
     *
     * <code>string dir = 2;</code>
     * @return The bytes for dir.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDirBytes() {
      java.lang.Object ref = dir_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dir_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0L) {
        output.writeUInt64(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dir_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dir_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (id_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dir_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dir_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.AudioMsg)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.AudioMsg other = (com.iamteer.Wcf.AudioMsg) obj;

      if (getId()
          != other.getId()) return false;
      if (!getDir()
          .equals(other.getDir())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getId());
      hash = (37 * hash) + DIR_FIELD_NUMBER;
      hash = (53 * hash) + getDir().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.AudioMsg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.AudioMsg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.AudioMsg)
        com.iamteer.Wcf.AudioMsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_AudioMsg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_AudioMsg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.AudioMsg.class, com.iamteer.Wcf.AudioMsg.Builder.class);
      }

      // Construct using com.iamteer.Wcf.AudioMsg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        dir_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_AudioMsg_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.AudioMsg getDefaultInstanceForType() {
        return com.iamteer.Wcf.AudioMsg.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.AudioMsg build() {
        com.iamteer.Wcf.AudioMsg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.AudioMsg buildPartial() {
        com.iamteer.Wcf.AudioMsg result = new com.iamteer.Wcf.AudioMsg(this);
        result.id_ = id_;
        result.dir_ = dir_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.AudioMsg other) {
        if (other == com.iamteer.Wcf.AudioMsg.getDefaultInstance()) return this;
        if (other.getId() != 0L) {
          setId(other.getId());
        }
        if (!other.getDir().isEmpty()) {
          dir_ = other.dir_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.AudioMsg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.AudioMsg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long id_ ;
      /**
       * <pre>
       * 语音消息 id
       * </pre>
       *
       * <code>uint64 id = 1 [jstype = JS_STRING];</code>
       * @return The id.
       */
      @java.lang.Override
      public long getId() {
        return id_;
      }
      /**
       * <pre>
       * 语音消息 id
       * </pre>
       *
       * <code>uint64 id = 1 [jstype = JS_STRING];</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(long value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 语音消息 id
       * </pre>
       *
       * <code>uint64 id = 1 [jstype = JS_STRING];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object dir_ = "";
      /**
       * <pre>
       * 存放目录
       * </pre>
       *
       * <code>string dir = 2;</code>
       * @return The dir.
       */
      public java.lang.String getDir() {
        java.lang.Object ref = dir_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dir_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 存放目录
       * </pre>
       *
       * <code>string dir = 2;</code>
       * @return The bytes for dir.
       */
      public com.google.protobuf.ByteString
          getDirBytes() {
        java.lang.Object ref = dir_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dir_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 存放目录
       * </pre>
       *
       * <code>string dir = 2;</code>
       * @param value The dir to set.
       * @return This builder for chaining.
       */
      public Builder setDir(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        dir_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 存放目录
       * </pre>
       *
       * <code>string dir = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDir() {
        
        dir_ = getDefaultInstance().getDir();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 存放目录
       * </pre>
       *
       * <code>string dir = 2;</code>
       * @param value The bytes for dir to set.
       * @return This builder for chaining.
       */
      public Builder setDirBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        dir_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.AudioMsg)
    }

    // @@protoc_insertion_point(class_scope:wcf.AudioMsg)
    private static final com.iamteer.Wcf.AudioMsg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.AudioMsg();
    }

    public static com.iamteer.Wcf.AudioMsg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.AudioMsg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RichTextOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.RichText)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 显示名字
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * 显示名字
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * 公众号 id
     * </pre>
     *
     * <code>string account = 2;</code>
     * @return The account.
     */
    java.lang.String getAccount();
    /**
     * <pre>
     * 公众号 id
     * </pre>
     *
     * <code>string account = 2;</code>
     * @return The bytes for account.
     */
    com.google.protobuf.ByteString
        getAccountBytes();

    /**
     * <pre>
     * 标题
     * </pre>
     *
     * <code>string title = 3;</code>
     * @return The title.
     */
    java.lang.String getTitle();
    /**
     * <pre>
     * 标题
     * </pre>
     *
     * <code>string title = 3;</code>
     * @return The bytes for title.
     */
    com.google.protobuf.ByteString
        getTitleBytes();

    /**
     * <pre>
     * 摘要
     * </pre>
     *
     * <code>string digest = 4;</code>
     * @return The digest.
     */
    java.lang.String getDigest();
    /**
     * <pre>
     * 摘要
     * </pre>
     *
     * <code>string digest = 4;</code>
     * @return The bytes for digest.
     */
    com.google.protobuf.ByteString
        getDigestBytes();

    /**
     * <pre>
     * 链接
     * </pre>
     *
     * <code>string url = 5;</code>
     * @return The url.
     */
    java.lang.String getUrl();
    /**
     * <pre>
     * 链接
     * </pre>
     *
     * <code>string url = 5;</code>
     * @return The bytes for url.
     */
    com.google.protobuf.ByteString
        getUrlBytes();

    /**
     * <pre>
     * 缩略图
     * </pre>
     *
     * <code>string thumburl = 6;</code>
     * @return The thumburl.
     */
    java.lang.String getThumburl();
    /**
     * <pre>
     * 缩略图
     * </pre>
     *
     * <code>string thumburl = 6;</code>
     * @return The bytes for thumburl.
     */
    com.google.protobuf.ByteString
        getThumburlBytes();

    /**
     * <pre>
     * 接收人
     * </pre>
     *
     * <code>string receiver = 7;</code>
     * @return The receiver.
     */
    java.lang.String getReceiver();
    /**
     * <pre>
     * 接收人
     * </pre>
     *
     * <code>string receiver = 7;</code>
     * @return The bytes for receiver.
     */
    com.google.protobuf.ByteString
        getReceiverBytes();
  }
  /**
   * Protobuf type {@code wcf.RichText}
   */
  public static final class RichText extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.RichText)
      RichTextOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RichText.newBuilder() to construct.
    private RichText(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RichText() {
      name_ = "";
      account_ = "";
      title_ = "";
      digest_ = "";
      url_ = "";
      thumburl_ = "";
      receiver_ = "";
    }

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

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

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

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

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

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

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

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

              receiver_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_RichText_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_RichText_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.RichText.class, com.iamteer.Wcf.RichText.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * 显示名字
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    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();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 显示名字
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int ACCOUNT_FIELD_NUMBER = 2;
    private volatile java.lang.Object account_;
    /**
     * <pre>
     * 公众号 id
     * </pre>
     *
     * <code>string account = 2;</code>
     * @return The account.
     */
    @java.lang.Override
    public java.lang.String getAccount() {
      java.lang.Object ref = account_;
      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();
        account_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 公众号 id
     * </pre>
     *
     * <code>string account = 2;</code>
     * @return The bytes for account.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAccountBytes() {
      java.lang.Object ref = account_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        account_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TITLE_FIELD_NUMBER = 3;
    private volatile java.lang.Object title_;
    /**
     * <pre>
     * 标题
     * </pre>
     *
     * <code>string title = 3;</code>
     * @return The title.
     */
    @java.lang.Override
    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();
        title_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 标题
     * </pre>
     *
     * <code>string title = 3;</code>
     * @return The bytes for title.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int DIGEST_FIELD_NUMBER = 4;
    private volatile java.lang.Object digest_;
    /**
     * <pre>
     * 摘要
     * </pre>
     *
     * <code>string digest = 4;</code>
     * @return The digest.
     */
    @java.lang.Override
    public java.lang.String getDigest() {
      java.lang.Object ref = digest_;
      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();
        digest_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 摘要
     * </pre>
     *
     * <code>string digest = 4;</code>
     * @return The bytes for digest.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDigestBytes() {
      java.lang.Object ref = digest_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        digest_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int URL_FIELD_NUMBER = 5;
    private volatile java.lang.Object url_;
    /**
     * <pre>
     * 链接
     * </pre>
     *
     * <code>string url = 5;</code>
     * @return The url.
     */
    @java.lang.Override
    public java.lang.String getUrl() {
      java.lang.Object ref = url_;
      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();
        url_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 链接
     * </pre>
     *
     * <code>string url = 5;</code>
     * @return The bytes for url.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUrlBytes() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        url_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int THUMBURL_FIELD_NUMBER = 6;
    private volatile java.lang.Object thumburl_;
    /**
     * <pre>
     * 缩略图
     * </pre>
     *
     * <code>string thumburl = 6;</code>
     * @return The thumburl.
     */
    @java.lang.Override
    public java.lang.String getThumburl() {
      java.lang.Object ref = thumburl_;
      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();
        thumburl_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 缩略图
     * </pre>
     *
     * <code>string thumburl = 6;</code>
     * @return The bytes for thumburl.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getThumburlBytes() {
      java.lang.Object ref = thumburl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        thumburl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RECEIVER_FIELD_NUMBER = 7;
    private volatile java.lang.Object receiver_;
    /**
     * <pre>
     * 接收人
     * </pre>
     *
     * <code>string receiver = 7;</code>
     * @return The receiver.
     */
    @java.lang.Override
    public java.lang.String getReceiver() {
      java.lang.Object ref = receiver_;
      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();
        receiver_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 接收人
     * </pre>
     *
     * <code>string receiver = 7;</code>
     * @return The bytes for receiver.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReceiverBytes() {
      java.lang.Object ref = receiver_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        receiver_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(account_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, account_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(title_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, title_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(digest_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, digest_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, url_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(thumburl_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, thumburl_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, receiver_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(account_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, account_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(title_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, title_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(digest_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, digest_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, url_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(thumburl_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, thumburl_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, receiver_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.RichText)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.RichText other = (com.iamteer.Wcf.RichText) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getAccount()
          .equals(other.getAccount())) return false;
      if (!getTitle()
          .equals(other.getTitle())) return false;
      if (!getDigest()
          .equals(other.getDigest())) return false;
      if (!getUrl()
          .equals(other.getUrl())) return false;
      if (!getThumburl()
          .equals(other.getThumburl())) return false;
      if (!getReceiver()
          .equals(other.getReceiver())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + ACCOUNT_FIELD_NUMBER;
      hash = (53 * hash) + getAccount().hashCode();
      hash = (37 * hash) + TITLE_FIELD_NUMBER;
      hash = (53 * hash) + getTitle().hashCode();
      hash = (37 * hash) + DIGEST_FIELD_NUMBER;
      hash = (53 * hash) + getDigest().hashCode();
      hash = (37 * hash) + URL_FIELD_NUMBER;
      hash = (53 * hash) + getUrl().hashCode();
      hash = (37 * hash) + THUMBURL_FIELD_NUMBER;
      hash = (53 * hash) + getThumburl().hashCode();
      hash = (37 * hash) + RECEIVER_FIELD_NUMBER;
      hash = (53 * hash) + getReceiver().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.RichText prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.RichText}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.RichText)
        com.iamteer.Wcf.RichTextOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_RichText_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_RichText_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.RichText.class, com.iamteer.Wcf.RichText.Builder.class);
      }

      // Construct using com.iamteer.Wcf.RichText.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        account_ = "";

        title_ = "";

        digest_ = "";

        url_ = "";

        thumburl_ = "";

        receiver_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_RichText_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.RichText getDefaultInstanceForType() {
        return com.iamteer.Wcf.RichText.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.RichText build() {
        com.iamteer.Wcf.RichText result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.RichText buildPartial() {
        com.iamteer.Wcf.RichText result = new com.iamteer.Wcf.RichText(this);
        result.name_ = name_;
        result.account_ = account_;
        result.title_ = title_;
        result.digest_ = digest_;
        result.url_ = url_;
        result.thumburl_ = thumburl_;
        result.receiver_ = receiver_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.RichText other) {
        if (other == com.iamteer.Wcf.RichText.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getAccount().isEmpty()) {
          account_ = other.account_;
          onChanged();
        }
        if (!other.getTitle().isEmpty()) {
          title_ = other.title_;
          onChanged();
        }
        if (!other.getDigest().isEmpty()) {
          digest_ = other.digest_;
          onChanged();
        }
        if (!other.getUrl().isEmpty()) {
          url_ = other.url_;
          onChanged();
        }
        if (!other.getThumburl().isEmpty()) {
          thumburl_ = other.thumburl_;
          onChanged();
        }
        if (!other.getReceiver().isEmpty()) {
          receiver_ = other.receiver_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.RichText parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.RichText) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * 显示名字
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 显示名字
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      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;
        }
      }
      /**
       * <pre>
       * 显示名字
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 显示名字
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 显示名字
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object account_ = "";
      /**
       * <pre>
       * 公众号 id
       * </pre>
       *
       * <code>string account = 2;</code>
       * @return The account.
       */
      public java.lang.String getAccount() {
        java.lang.Object ref = account_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          account_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 公众号 id
       * </pre>
       *
       * <code>string account = 2;</code>
       * @return The bytes for account.
       */
      public com.google.protobuf.ByteString
          getAccountBytes() {
        java.lang.Object ref = account_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          account_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 公众号 id
       * </pre>
       *
       * <code>string account = 2;</code>
       * @param value The account to set.
       * @return This builder for chaining.
       */
      public Builder setAccount(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        account_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 公众号 id
       * </pre>
       *
       * <code>string account = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccount() {
        
        account_ = getDefaultInstance().getAccount();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 公众号 id
       * </pre>
       *
       * <code>string account = 2;</code>
       * @param value The bytes for account to set.
       * @return This builder for chaining.
       */
      public Builder setAccountBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        account_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object title_ = "";
      /**
       * <pre>
       * 标题
       * </pre>
       *
       * <code>string title = 3;</code>
       * @return The title.
       */
      public java.lang.String getTitle() {
        java.lang.Object ref = title_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          title_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 标题
       * </pre>
       *
       * <code>string title = 3;</code>
       * @return The bytes for title.
       */
      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;
        }
      }
      /**
       * <pre>
       * 标题
       * </pre>
       *
       * <code>string title = 3;</code>
       * @param value The title to set.
       * @return This builder for chaining.
       */
      public Builder setTitle(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        title_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 标题
       * </pre>
       *
       * <code>string title = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTitle() {
        
        title_ = getDefaultInstance().getTitle();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 标题
       * </pre>
       *
       * <code>string title = 3;</code>
       * @param value The bytes for title to set.
       * @return This builder for chaining.
       */
      public Builder setTitleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        title_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object digest_ = "";
      /**
       * <pre>
       * 摘要
       * </pre>
       *
       * <code>string digest = 4;</code>
       * @return The digest.
       */
      public java.lang.String getDigest() {
        java.lang.Object ref = digest_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          digest_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 摘要
       * </pre>
       *
       * <code>string digest = 4;</code>
       * @return The bytes for digest.
       */
      public com.google.protobuf.ByteString
          getDigestBytes() {
        java.lang.Object ref = digest_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          digest_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 摘要
       * </pre>
       *
       * <code>string digest = 4;</code>
       * @param value The digest to set.
       * @return This builder for chaining.
       */
      public Builder setDigest(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        digest_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 摘要
       * </pre>
       *
       * <code>string digest = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDigest() {
        
        digest_ = getDefaultInstance().getDigest();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 摘要
       * </pre>
       *
       * <code>string digest = 4;</code>
       * @param value The bytes for digest to set.
       * @return This builder for chaining.
       */
      public Builder setDigestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        digest_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object url_ = "";
      /**
       * <pre>
       * 链接
       * </pre>
       *
       * <code>string url = 5;</code>
       * @return The url.
       */
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          url_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 链接
       * </pre>
       *
       * <code>string url = 5;</code>
       * @return The bytes for url.
       */
      public com.google.protobuf.ByteString
          getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 链接
       * </pre>
       *
       * <code>string url = 5;</code>
       * @param value The url to set.
       * @return This builder for chaining.
       */
      public Builder setUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        url_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 链接
       * </pre>
       *
       * <code>string url = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearUrl() {
        
        url_ = getDefaultInstance().getUrl();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 链接
       * </pre>
       *
       * <code>string url = 5;</code>
       * @param value The bytes for url to set.
       * @return This builder for chaining.
       */
      public Builder setUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        url_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object thumburl_ = "";
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumburl = 6;</code>
       * @return The thumburl.
       */
      public java.lang.String getThumburl() {
        java.lang.Object ref = thumburl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          thumburl_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumburl = 6;</code>
       * @return The bytes for thumburl.
       */
      public com.google.protobuf.ByteString
          getThumburlBytes() {
        java.lang.Object ref = thumburl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          thumburl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumburl = 6;</code>
       * @param value The thumburl to set.
       * @return This builder for chaining.
       */
      public Builder setThumburl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        thumburl_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumburl = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearThumburl() {
        
        thumburl_ = getDefaultInstance().getThumburl();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 缩略图
       * </pre>
       *
       * <code>string thumburl = 6;</code>
       * @param value The bytes for thumburl to set.
       * @return This builder for chaining.
       */
      public Builder setThumburlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        thumburl_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object receiver_ = "";
      /**
       * <pre>
       * 接收人
       * </pre>
       *
       * <code>string receiver = 7;</code>
       * @return The receiver.
       */
      public java.lang.String getReceiver() {
        java.lang.Object ref = receiver_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          receiver_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 接收人
       * </pre>
       *
       * <code>string receiver = 7;</code>
       * @return The bytes for receiver.
       */
      public com.google.protobuf.ByteString
          getReceiverBytes() {
        java.lang.Object ref = receiver_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          receiver_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 接收人
       * </pre>
       *
       * <code>string receiver = 7;</code>
       * @param value The receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiver(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        receiver_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 接收人
       * </pre>
       *
       * <code>string receiver = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearReceiver() {
        
        receiver_ = getDefaultInstance().getReceiver();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 接收人
       * </pre>
       *
       * <code>string receiver = 7;</code>
       * @param value The bytes for receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiverBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        receiver_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.RichText)
    }

    // @@protoc_insertion_point(class_scope:wcf.RichText)
    private static final com.iamteer.Wcf.RichText DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.RichText();
    }

    public static com.iamteer.Wcf.RichText getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.RichText getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PatMsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.PatMsg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 群 id
     * </pre>
     *
     * <code>string roomid = 1;</code>
     * @return The roomid.
     */
    java.lang.String getRoomid();
    /**
     * <pre>
     * 群 id
     * </pre>
     *
     * <code>string roomid = 1;</code>
     * @return The bytes for roomid.
     */
    com.google.protobuf.ByteString
        getRoomidBytes();

    /**
     * <pre>
     * wxid
     * </pre>
     *
     * <code>string wxid = 2;</code>
     * @return The wxid.
     */
    java.lang.String getWxid();
    /**
     * <pre>
     * wxid
     * </pre>
     *
     * <code>string wxid = 2;</code>
     * @return The bytes for wxid.
     */
    com.google.protobuf.ByteString
        getWxidBytes();
  }
  /**
   * Protobuf type {@code wcf.PatMsg}
   */
  public static final class PatMsg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.PatMsg)
      PatMsgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PatMsg.newBuilder() to construct.
    private PatMsg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PatMsg() {
      roomid_ = "";
      wxid_ = "";
    }

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

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

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

              wxid_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_PatMsg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_PatMsg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.PatMsg.class, com.iamteer.Wcf.PatMsg.Builder.class);
    }

    public static final int ROOMID_FIELD_NUMBER = 1;
    private volatile java.lang.Object roomid_;
    /**
     * <pre>
     * 群 id
     * </pre>
     *
     * <code>string roomid = 1;</code>
     * @return The roomid.
     */
    @java.lang.Override
    public java.lang.String getRoomid() {
      java.lang.Object ref = roomid_;
      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();
        roomid_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 群 id
     * </pre>
     *
     * <code>string roomid = 1;</code>
     * @return The bytes for roomid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRoomidBytes() {
      java.lang.Object ref = roomid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        roomid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WXID_FIELD_NUMBER = 2;
    private volatile java.lang.Object wxid_;
    /**
     * <pre>
     * wxid
     * </pre>
     *
     * <code>string wxid = 2;</code>
     * @return The wxid.
     */
    @java.lang.Override
    public java.lang.String getWxid() {
      java.lang.Object ref = wxid_;
      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();
        wxid_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * wxid
     * </pre>
     *
     * <code>string wxid = 2;</code>
     * @return The bytes for wxid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWxidBytes() {
      java.lang.Object ref = wxid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        wxid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(roomid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, roomid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, wxid_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(roomid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, roomid_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(wxid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, wxid_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.PatMsg)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.PatMsg other = (com.iamteer.Wcf.PatMsg) obj;

      if (!getRoomid()
          .equals(other.getRoomid())) return false;
      if (!getWxid()
          .equals(other.getWxid())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ROOMID_FIELD_NUMBER;
      hash = (53 * hash) + getRoomid().hashCode();
      hash = (37 * hash) + WXID_FIELD_NUMBER;
      hash = (53 * hash) + getWxid().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.PatMsg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.PatMsg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.PatMsg)
        com.iamteer.Wcf.PatMsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_PatMsg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_PatMsg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.PatMsg.class, com.iamteer.Wcf.PatMsg.Builder.class);
      }

      // Construct using com.iamteer.Wcf.PatMsg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        wxid_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_PatMsg_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.PatMsg getDefaultInstanceForType() {
        return com.iamteer.Wcf.PatMsg.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.PatMsg build() {
        com.iamteer.Wcf.PatMsg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.PatMsg buildPartial() {
        com.iamteer.Wcf.PatMsg result = new com.iamteer.Wcf.PatMsg(this);
        result.roomid_ = roomid_;
        result.wxid_ = wxid_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.PatMsg other) {
        if (other == com.iamteer.Wcf.PatMsg.getDefaultInstance()) return this;
        if (!other.getRoomid().isEmpty()) {
          roomid_ = other.roomid_;
          onChanged();
        }
        if (!other.getWxid().isEmpty()) {
          wxid_ = other.wxid_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.PatMsg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.PatMsg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object roomid_ = "";
      /**
       * <pre>
       * 群 id
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @return The roomid.
       */
      public java.lang.String getRoomid() {
        java.lang.Object ref = roomid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          roomid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 群 id
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @return The bytes for roomid.
       */
      public com.google.protobuf.ByteString
          getRoomidBytes() {
        java.lang.Object ref = roomid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          roomid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 群 id
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @param value The roomid to set.
       * @return This builder for chaining.
       */
      public Builder setRoomid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        roomid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 群 id
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRoomid() {
        
        roomid_ = getDefaultInstance().getRoomid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 群 id
       * </pre>
       *
       * <code>string roomid = 1;</code>
       * @param value The bytes for roomid to set.
       * @return This builder for chaining.
       */
      public Builder setRoomidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        roomid_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object wxid_ = "";
      /**
       * <pre>
       * wxid
       * </pre>
       *
       * <code>string wxid = 2;</code>
       * @return The wxid.
       */
      public java.lang.String getWxid() {
        java.lang.Object ref = wxid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          wxid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * wxid
       * </pre>
       *
       * <code>string wxid = 2;</code>
       * @return The bytes for wxid.
       */
      public com.google.protobuf.ByteString
          getWxidBytes() {
        java.lang.Object ref = wxid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          wxid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * wxid
       * </pre>
       *
       * <code>string wxid = 2;</code>
       * @param value The wxid to set.
       * @return This builder for chaining.
       */
      public Builder setWxid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        wxid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * wxid
       * </pre>
       *
       * <code>string wxid = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearWxid() {
        
        wxid_ = getDefaultInstance().getWxid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * wxid
       * </pre>
       *
       * <code>string wxid = 2;</code>
       * @param value The bytes for wxid to set.
       * @return This builder for chaining.
       */
      public Builder setWxidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        wxid_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.PatMsg)
    }

    // @@protoc_insertion_point(class_scope:wcf.PatMsg)
    private static final com.iamteer.Wcf.PatMsg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.PatMsg();
    }

    public static com.iamteer.Wcf.PatMsg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.PatMsg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface OcrMsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.OcrMsg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 状态
     * </pre>
     *
     * <code>int32 status = 1;</code>
     * @return The status.
     */
    int getStatus();

    /**
     * <pre>
     * 结果
     * </pre>
     *
     * <code>string result = 2;</code>
     * @return The result.
     */
    java.lang.String getResult();
    /**
     * <pre>
     * 结果
     * </pre>
     *
     * <code>string result = 2;</code>
     * @return The bytes for result.
     */
    com.google.protobuf.ByteString
        getResultBytes();
  }
  /**
   * Protobuf type {@code wcf.OcrMsg}
   */
  public static final class OcrMsg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.OcrMsg)
      OcrMsgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use OcrMsg.newBuilder() to construct.
    private OcrMsg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private OcrMsg() {
      result_ = "";
    }

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

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

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

              result_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_OcrMsg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_OcrMsg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.OcrMsg.class, com.iamteer.Wcf.OcrMsg.Builder.class);
    }

    public static final int STATUS_FIELD_NUMBER = 1;
    private int status_;
    /**
     * <pre>
     * 状态
     * </pre>
     *
     * <code>int32 status = 1;</code>
     * @return The status.
     */
    @java.lang.Override
    public int getStatus() {
      return status_;
    }

    public static final int RESULT_FIELD_NUMBER = 2;
    private volatile java.lang.Object result_;
    /**
     * <pre>
     * 结果
     * </pre>
     *
     * <code>string result = 2;</code>
     * @return The result.
     */
    @java.lang.Override
    public java.lang.String getResult() {
      java.lang.Object ref = result_;
      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();
        result_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 结果
     * </pre>
     *
     * <code>string result = 2;</code>
     * @return The bytes for result.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResultBytes() {
      java.lang.Object ref = result_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        result_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (status_ != 0) {
        output.writeInt32(1, status_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(result_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, result_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (status_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, status_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(result_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, result_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.OcrMsg)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.OcrMsg other = (com.iamteer.Wcf.OcrMsg) obj;

      if (getStatus()
          != other.getStatus()) return false;
      if (!getResult()
          .equals(other.getResult())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + getStatus();
      hash = (37 * hash) + RESULT_FIELD_NUMBER;
      hash = (53 * hash) + getResult().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.OcrMsg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.OcrMsg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.OcrMsg)
        com.iamteer.Wcf.OcrMsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_OcrMsg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_OcrMsg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.OcrMsg.class, com.iamteer.Wcf.OcrMsg.Builder.class);
      }

      // Construct using com.iamteer.Wcf.OcrMsg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        result_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_OcrMsg_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.OcrMsg getDefaultInstanceForType() {
        return com.iamteer.Wcf.OcrMsg.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.OcrMsg build() {
        com.iamteer.Wcf.OcrMsg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.OcrMsg buildPartial() {
        com.iamteer.Wcf.OcrMsg result = new com.iamteer.Wcf.OcrMsg(this);
        result.status_ = status_;
        result.result_ = result_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.OcrMsg other) {
        if (other == com.iamteer.Wcf.OcrMsg.getDefaultInstance()) return this;
        if (other.getStatus() != 0) {
          setStatus(other.getStatus());
        }
        if (!other.getResult().isEmpty()) {
          result_ = other.result_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.OcrMsg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.OcrMsg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int status_ ;
      /**
       * <pre>
       * 状态
       * </pre>
       *
       * <code>int32 status = 1;</code>
       * @return The status.
       */
      @java.lang.Override
      public int getStatus() {
        return status_;
      }
      /**
       * <pre>
       * 状态
       * </pre>
       *
       * <code>int32 status = 1;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(int value) {
        
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 状态
       * </pre>
       *
       * <code>int32 status = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object result_ = "";
      /**
       * <pre>
       * 结果
       * </pre>
       *
       * <code>string result = 2;</code>
       * @return The result.
       */
      public java.lang.String getResult() {
        java.lang.Object ref = result_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          result_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 结果
       * </pre>
       *
       * <code>string result = 2;</code>
       * @return The bytes for result.
       */
      public com.google.protobuf.ByteString
          getResultBytes() {
        java.lang.Object ref = result_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          result_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 结果
       * </pre>
       *
       * <code>string result = 2;</code>
       * @param value The result to set.
       * @return This builder for chaining.
       */
      public Builder setResult(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        result_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 结果
       * </pre>
       *
       * <code>string result = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResult() {
        
        result_ = getDefaultInstance().getResult();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 结果
       * </pre>
       *
       * <code>string result = 2;</code>
       * @param value The bytes for result to set.
       * @return This builder for chaining.
       */
      public Builder setResultBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        result_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.OcrMsg)
    }

    // @@protoc_insertion_point(class_scope:wcf.OcrMsg)
    private static final com.iamteer.Wcf.OcrMsg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.OcrMsg();
    }

    public static com.iamteer.Wcf.OcrMsg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.OcrMsg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ForwardMsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:wcf.ForwardMsg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 待转发消息 ID
     * </pre>
     *
     * <code>uint64 id = 1 [jstype = JS_STRING];</code>
     * @return The id.
     */
    long getId();

    /**
     * <pre>
     * 转发接收目标，群为 roomId，个人为 wxid
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The receiver.
     */
    java.lang.String getReceiver();
    /**
     * <pre>
     * 转发接收目标，群为 roomId，个人为 wxid
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The bytes for receiver.
     */
    com.google.protobuf.ByteString
        getReceiverBytes();
  }
  /**
   * Protobuf type {@code wcf.ForwardMsg}
   */
  public static final class ForwardMsg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:wcf.ForwardMsg)
      ForwardMsgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ForwardMsg.newBuilder() to construct.
    private ForwardMsg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ForwardMsg() {
      receiver_ = "";
    }

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

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

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

              receiver_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.iamteer.Wcf.internal_static_wcf_ForwardMsg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.iamteer.Wcf.internal_static_wcf_ForwardMsg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.iamteer.Wcf.ForwardMsg.class, com.iamteer.Wcf.ForwardMsg.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private long id_;
    /**
     * <pre>
     * 待转发消息 ID
     * </pre>
     *
     * <code>uint64 id = 1 [jstype = JS_STRING];</code>
     * @return The id.
     */
    @java.lang.Override
    public long getId() {
      return id_;
    }

    public static final int RECEIVER_FIELD_NUMBER = 2;
    private volatile java.lang.Object receiver_;
    /**
     * <pre>
     * 转发接收目标，群为 roomId，个人为 wxid
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The receiver.
     */
    @java.lang.Override
    public java.lang.String getReceiver() {
      java.lang.Object ref = receiver_;
      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();
        receiver_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 转发接收目标，群为 roomId，个人为 wxid
     * </pre>
     *
     * <code>string receiver = 2;</code>
     * @return The bytes for receiver.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReceiverBytes() {
      java.lang.Object ref = receiver_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        receiver_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0L) {
        output.writeUInt64(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, receiver_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (id_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiver_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, receiver_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.iamteer.Wcf.ForwardMsg)) {
        return super.equals(obj);
      }
      com.iamteer.Wcf.ForwardMsg other = (com.iamteer.Wcf.ForwardMsg) obj;

      if (getId()
          != other.getId()) return false;
      if (!getReceiver()
          .equals(other.getReceiver())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getId());
      hash = (37 * hash) + RECEIVER_FIELD_NUMBER;
      hash = (53 * hash) + getReceiver().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.iamteer.Wcf.ForwardMsg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code wcf.ForwardMsg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:wcf.ForwardMsg)
        com.iamteer.Wcf.ForwardMsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.iamteer.Wcf.internal_static_wcf_ForwardMsg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.iamteer.Wcf.internal_static_wcf_ForwardMsg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.iamteer.Wcf.ForwardMsg.class, com.iamteer.Wcf.ForwardMsg.Builder.class);
      }

      // Construct using com.iamteer.Wcf.ForwardMsg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        receiver_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.iamteer.Wcf.internal_static_wcf_ForwardMsg_descriptor;
      }

      @java.lang.Override
      public com.iamteer.Wcf.ForwardMsg getDefaultInstanceForType() {
        return com.iamteer.Wcf.ForwardMsg.getDefaultInstance();
      }

      @java.lang.Override
      public com.iamteer.Wcf.ForwardMsg build() {
        com.iamteer.Wcf.ForwardMsg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.iamteer.Wcf.ForwardMsg buildPartial() {
        com.iamteer.Wcf.ForwardMsg result = new com.iamteer.Wcf.ForwardMsg(this);
        result.id_ = id_;
        result.receiver_ = receiver_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.iamteer.Wcf.ForwardMsg other) {
        if (other == com.iamteer.Wcf.ForwardMsg.getDefaultInstance()) return this;
        if (other.getId() != 0L) {
          setId(other.getId());
        }
        if (!other.getReceiver().isEmpty()) {
          receiver_ = other.receiver_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.iamteer.Wcf.ForwardMsg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.iamteer.Wcf.ForwardMsg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long id_ ;
      /**
       * <pre>
       * 待转发消息 ID
       * </pre>
       *
       * <code>uint64 id = 1 [jstype = JS_STRING];</code>
       * @return The id.
       */
      @java.lang.Override
      public long getId() {
        return id_;
      }
      /**
       * <pre>
       * 待转发消息 ID
       * </pre>
       *
       * <code>uint64 id = 1 [jstype = JS_STRING];</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(long value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 待转发消息 ID
       * </pre>
       *
       * <code>uint64 id = 1 [jstype = JS_STRING];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object receiver_ = "";
      /**
       * <pre>
       * 转发接收目标，群为 roomId，个人为 wxid
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @return The receiver.
       */
      public java.lang.String getReceiver() {
        java.lang.Object ref = receiver_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          receiver_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * 转发接收目标，群为 roomId，个人为 wxid
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @return The bytes for receiver.
       */
      public com.google.protobuf.ByteString
          getReceiverBytes() {
        java.lang.Object ref = receiver_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          receiver_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 转发接收目标，群为 roomId，个人为 wxid
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @param value The receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiver(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        receiver_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 转发接收目标，群为 roomId，个人为 wxid
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearReceiver() {
        
        receiver_ = getDefaultInstance().getReceiver();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 转发接收目标，群为 roomId，个人为 wxid
       * </pre>
       *
       * <code>string receiver = 2;</code>
       * @param value The bytes for receiver to set.
       * @return This builder for chaining.
       */
      public Builder setReceiverBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        receiver_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:wcf.ForwardMsg)
    }

    // @@protoc_insertion_point(class_scope:wcf.ForwardMsg)
    private static final com.iamteer.Wcf.ForwardMsg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.iamteer.Wcf.ForwardMsg();
    }

    public static com.iamteer.Wcf.ForwardMsg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.iamteer.Wcf.ForwardMsg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_Request_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_Request_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_Response_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_Response_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_Empty_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_Empty_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_WxMsg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_WxMsg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_TextMsg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_TextMsg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_PathMsg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_PathMsg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_XmlMsg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_XmlMsg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_MsgTypes_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_MsgTypes_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_MsgTypes_TypesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_MsgTypes_TypesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_RpcContact_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_RpcContact_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_RpcContacts_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_RpcContacts_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_DbNames_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_DbNames_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_DbTable_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_DbTable_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_DbTables_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_DbTables_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_DbQuery_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_DbQuery_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_DbField_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_DbField_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_DbRow_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_DbRow_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_DbRows_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_DbRows_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_Verification_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_Verification_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_MemberMgmt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_MemberMgmt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_UserInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_UserInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_DecPath_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_DecPath_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_Transfer_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_Transfer_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_AttachMsg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_AttachMsg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_AudioMsg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_AudioMsg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_RichText_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_RichText_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_PatMsg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_PatMsg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_OcrMsg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_OcrMsg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_wcf_ForwardMsg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_wcf_ForwardMsg_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\twcf.proto\022\003wcf\"\377\003\n\007Request\022\034\n\004func\030\001 \001" +
      "(\0162\016.wcf.Functions\022\033\n\005empty\030\002 \001(\0132\n.wcf." +
      "EmptyH\000\022\r\n\003str\030\003 \001(\tH\000\022\033\n\003txt\030\004 \001(\0132\014.wc" +
      "f.TextMsgH\000\022\034\n\004file\030\005 \001(\0132\014.wcf.PathMsgH" +
      "\000\022\035\n\005query\030\006 \001(\0132\014.wcf.DbQueryH\000\022\036\n\001v\030\007 " +
      "\001(\0132\021.wcf.VerificationH\000\022\034\n\001m\030\010 \001(\0132\017.wc" +
      "f.MemberMgmtH\000\022\032\n\003xml\030\t \001(\0132\013.wcf.XmlMsg" +
      "H\000\022\033\n\003dec\030\n \001(\0132\014.wcf.DecPathH\000\022\033\n\002tf\030\013 " +
      "\001(\0132\r.wcf.TransferH\000\022\022\n\004ui64\030\014 \001(\004B\0020\001H\000" +
      "\022\016\n\004flag\030\r \001(\010H\000\022\035\n\003att\030\016 \001(\0132\016.wcf.Atta" +
      "chMsgH\000\022\033\n\002am\030\017 \001(\0132\r.wcf.AudioMsgH\000\022\033\n\002" +
      "rt\030\020 \001(\0132\r.wcf.RichTextH\000\022\031\n\002pm\030\021 \001(\0132\013." +
      "wcf.PatMsgH\000\022\035\n\002fm\030\022 \001(\0132\017.wcf.ForwardMs" +
      "gH\000B\005\n\003msg\"\307\002\n\010Response\022\034\n\004func\030\001 \001(\0162\016." +
      "wcf.Functions\022\020\n\006status\030\002 \001(\005H\000\022\r\n\003str\030\003" +
      " \001(\tH\000\022\033\n\005wxmsg\030\004 \001(\0132\n.wcf.WxMsgH\000\022\036\n\005t" +
      "ypes\030\005 \001(\0132\r.wcf.MsgTypesH\000\022$\n\010contacts\030" +
      "\006 \001(\0132\020.wcf.RpcContactsH\000\022\033\n\003dbs\030\007 \001(\0132\014" +
      ".wcf.DbNamesH\000\022\037\n\006tables\030\010 \001(\0132\r.wcf.DbT" +
      "ablesH\000\022\033\n\004rows\030\t \001(\0132\013.wcf.DbRowsH\000\022\033\n\002" +
      "ui\030\n \001(\0132\r.wcf.UserInfoH\000\022\032\n\003ocr\030\013 \001(\0132\013" +
      ".wcf.OcrMsgH\000B\005\n\003msg\"\007\n\005Empty\"\276\001\n\005WxMsg\022" +
      "\017\n\007is_self\030\001 \001(\010\022\020\n\010is_group\030\002 \001(\010\022\016\n\002id" +
      "\030\003 \001(\004B\0020\001\022\014\n\004type\030\004 \001(\r\022\n\n\002ts\030\005 \001(\r\022\016\n\006" +
      "roomid\030\006 \001(\t\022\017\n\007content\030\007 \001(\t\022\016\n\006sender\030" +
      "\010 \001(\t\022\014\n\004sign\030\t \001(\t\022\r\n\005thumb\030\n \001(\t\022\r\n\005ex" +
      "tra\030\013 \001(\t\022\013\n\003xml\030\014 \001(\t\"7\n\007TextMsg\022\013\n\003msg" +
      "\030\001 \001(\t\022\020\n\010receiver\030\002 \001(\t\022\r\n\005aters\030\003 \001(\t\"" +
      ")\n\007PathMsg\022\014\n\004path\030\001 \001(\t\022\020\n\010receiver\030\002 \001" +
      "(\t\"G\n\006XmlMsg\022\020\n\010receiver\030\001 \001(\t\022\017\n\007conten" +
      "t\030\002 \001(\t\022\014\n\004path\030\003 \001(\t\022\014\n\004type\030\004 \001(\005\"a\n\010M" +
      "sgTypes\022\'\n\005types\030\001 \003(\0132\030.wcf.MsgTypes.Ty" +
      "pesEntry\032,\n\nTypesEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005v" +
      "alue\030\002 \001(\t:\0028\001\"\207\001\n\nRpcContact\022\014\n\004wxid\030\001 " +
      "\001(\t\022\014\n\004code\030\002 \001(\t\022\016\n\006remark\030\003 \001(\t\022\014\n\004nam" +
      "e\030\004 \001(\t\022\017\n\007country\030\005 \001(\t\022\020\n\010province\030\006 \001" +
      "(\t\022\014\n\004city\030\007 \001(\t\022\016\n\006gender\030\010 \001(\005\"0\n\013RpcC" +
      "ontacts\022!\n\010contacts\030\001 \003(\0132\017.wcf.RpcConta" +
      "ct\"\030\n\007DbNames\022\r\n\005names\030\001 \003(\t\"$\n\007DbTable\022" +
      "\014\n\004name\030\001 \001(\t\022\013\n\003sql\030\002 \001(\t\"(\n\010DbTables\022\034" +
      "\n\006tables\030\001 \003(\0132\014.wcf.DbTable\"\"\n\007DbQuery\022" +
      "\n\n\002db\030\001 \001(\t\022\013\n\003sql\030\002 \001(\t\"8\n\007DbField\022\014\n\004t" +
      "ype\030\001 \001(\005\022\016\n\006column\030\002 \001(\t\022\017\n\007content\030\003 \001" +
      "(\014\"%\n\005DbRow\022\034\n\006fields\030\001 \003(\0132\014.wcf.DbFiel" +
      "d\"\"\n\006DbRows\022\030\n\004rows\030\001 \003(\0132\n.wcf.DbRow\"5\n" +
      "\014Verification\022\n\n\002v3\030\001 \001(\t\022\n\n\002v4\030\002 \001(\t\022\r\n" +
      "\005scene\030\003 \001(\005\"+\n\nMemberMgmt\022\016\n\006roomid\030\001 \001" +
      "(\t\022\r\n\005wxids\030\002 \001(\t\"D\n\010UserInfo\022\014\n\004wxid\030\001 " +
      "\001(\t\022\014\n\004name\030\002 \001(\t\022\016\n\006mobile\030\003 \001(\t\022\014\n\004hom" +
      "e\030\004 \001(\t\"#\n\007DecPath\022\013\n\003src\030\001 \001(\t\022\013\n\003dst\030\002" +
      " \001(\t\"4\n\010Transfer\022\014\n\004wxid\030\001 \001(\t\022\014\n\004tfid\030\002" +
      " \001(\t\022\014\n\004taid\030\003 \001(\t\"9\n\tAttachMsg\022\016\n\002id\030\001 " +
      "\001(\004B\0020\001\022\r\n\005thumb\030\002 \001(\t\022\r\n\005extra\030\003 \001(\t\"\'\n" +
      "\010AudioMsg\022\016\n\002id\030\001 \001(\004B\0020\001\022\013\n\003dir\030\002 \001(\t\"y" +
      "\n\010RichText\022\014\n\004name\030\001 \001(\t\022\017\n\007account\030\002 \001(" +
      "\t\022\r\n\005title\030\003 \001(\t\022\016\n\006digest\030\004 \001(\t\022\013\n\003url\030" +
      "\005 \001(\t\022\020\n\010thumburl\030\006 \001(\t\022\020\n\010receiver\030\007 \001(" +
      "\t\"&\n\006PatMsg\022\016\n\006roomid\030\001 \001(\t\022\014\n\004wxid\030\002 \001(" +
      "\t\"(\n\006OcrMsg\022\016\n\006status\030\001 \001(\005\022\016\n\006result\030\002 " +
      "\001(\t\".\n\nForwardMsg\022\016\n\002id\030\001 \001(\004B\0020\001\022\020\n\010rec" +
      "eiver\030\002 \001(\t*\362\005\n\tFunctions\022\021\n\rFUNC_RESERV" +
      "ED\020\000\022\021\n\rFUNC_IS_LOGIN\020\001\022\026\n\022FUNC_GET_SELF" +
      "_WXID\020\020\022\026\n\022FUNC_GET_MSG_TYPES\020\021\022\025\n\021FUNC_" +
      "GET_CONTACTS\020\022\022\025\n\021FUNC_GET_DB_NAMES\020\023\022\026\n" +
      "\022FUNC_GET_DB_TABLES\020\024\022\026\n\022FUNC_GET_USER_I" +
      "NFO\020\025\022\026\n\022FUNC_GET_AUDIO_MSG\020\026\022\021\n\rFUNC_SE" +
      "ND_TXT\020 \022\021\n\rFUNC_SEND_IMG\020!\022\022\n\016FUNC_SEND" +
      "_FILE\020\"\022\021\n\rFUNC_SEND_XML\020#\022\025\n\021FUNC_SEND_" +
      "EMOTION\020$\022\026\n\022FUNC_SEND_RICH_TXT\020%\022\025\n\021FUN" +
      "C_SEND_PAT_MSG\020&\022\024\n\020FUNC_FORWARD_MSG\020\'\022\030" +
      "\n\024FUNC_ENABLE_RECV_TXT\0200\022\031\n\025FUNC_DISABLE" +
      "_RECV_TXT\020@\022\026\n\022FUNC_EXEC_DB_QUERY\020P\022\026\n\022F" +
      "UNC_ACCEPT_FRIEND\020Q\022\026\n\022FUNC_RECV_TRANSFE" +
      "R\020R\022\024\n\020FUNC_REFRESH_PYQ\020S\022\030\n\024FUNC_DOWNLO" +
      "AD_ATTACH\020T\022\031\n\025FUNC_GET_CONTACT_INFO\020U\022\023" +
      "\n\017FUNC_REVOKE_MSG\020V\022\027\n\023FUNC_REFRESH_QRCO" +
      "DE\020W\022\026\n\022FUNC_DECRYPT_IMAGE\020`\022\021\n\rFUNC_EXE" +
      "C_OCR\020a\022\031\n\025FUNC_ADD_ROOM_MEMBERS\020p\022\031\n\025FU" +
      "NC_DEL_ROOM_MEMBERS\020q\022\031\n\025FUNC_INV_ROOM_M" +
      "EMBERS\020rB\r\n\013com.iamteerb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_wcf_Request_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_wcf_Request_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_Request_descriptor,
        new java.lang.String[] { "Func", "Empty", "Str", "Txt", "File", "Query", "V", "M", "Xml", "Dec", "Tf", "Ui64", "Flag", "Att", "Am", "Rt", "Pm", "Fm", "Msg", });
    internal_static_wcf_Response_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_wcf_Response_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_Response_descriptor,
        new java.lang.String[] { "Func", "Status", "Str", "Wxmsg", "Types", "Contacts", "Dbs", "Tables", "Rows", "Ui", "Ocr", "Msg", });
    internal_static_wcf_Empty_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_wcf_Empty_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_Empty_descriptor,
        new java.lang.String[] { });
    internal_static_wcf_WxMsg_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_wcf_WxMsg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_WxMsg_descriptor,
        new java.lang.String[] { "IsSelf", "IsGroup", "Id", "Type", "Ts", "Roomid", "Content", "Sender", "Sign", "Thumb", "Extra", "Xml", });
    internal_static_wcf_TextMsg_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_wcf_TextMsg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_TextMsg_descriptor,
        new java.lang.String[] { "Msg", "Receiver", "Aters", });
    internal_static_wcf_PathMsg_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_wcf_PathMsg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_PathMsg_descriptor,
        new java.lang.String[] { "Path", "Receiver", });
    internal_static_wcf_XmlMsg_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_wcf_XmlMsg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_XmlMsg_descriptor,
        new java.lang.String[] { "Receiver", "Content", "Path", "Type", });
    internal_static_wcf_MsgTypes_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_wcf_MsgTypes_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_MsgTypes_descriptor,
        new java.lang.String[] { "Types", });
    internal_static_wcf_MsgTypes_TypesEntry_descriptor =
      internal_static_wcf_MsgTypes_descriptor.getNestedTypes().get(0);
    internal_static_wcf_MsgTypes_TypesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_MsgTypes_TypesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_wcf_RpcContact_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_wcf_RpcContact_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_RpcContact_descriptor,
        new java.lang.String[] { "Wxid", "Code", "Remark", "Name", "Country", "Province", "City", "Gender", });
    internal_static_wcf_RpcContacts_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_wcf_RpcContacts_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_RpcContacts_descriptor,
        new java.lang.String[] { "Contacts", });
    internal_static_wcf_DbNames_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_wcf_DbNames_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_DbNames_descriptor,
        new java.lang.String[] { "Names", });
    internal_static_wcf_DbTable_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_wcf_DbTable_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_DbTable_descriptor,
        new java.lang.String[] { "Name", "Sql", });
    internal_static_wcf_DbTables_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_wcf_DbTables_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_DbTables_descriptor,
        new java.lang.String[] { "Tables", });
    internal_static_wcf_DbQuery_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_wcf_DbQuery_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_DbQuery_descriptor,
        new java.lang.String[] { "Db", "Sql", });
    internal_static_wcf_DbField_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_wcf_DbField_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_DbField_descriptor,
        new java.lang.String[] { "Type", "Column", "Content", });
    internal_static_wcf_DbRow_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_wcf_DbRow_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_DbRow_descriptor,
        new java.lang.String[] { "Fields", });
    internal_static_wcf_DbRows_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_wcf_DbRows_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_DbRows_descriptor,
        new java.lang.String[] { "Rows", });
    internal_static_wcf_Verification_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_wcf_Verification_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_Verification_descriptor,
        new java.lang.String[] { "V3", "V4", "Scene", });
    internal_static_wcf_MemberMgmt_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_wcf_MemberMgmt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_MemberMgmt_descriptor,
        new java.lang.String[] { "Roomid", "Wxids", });
    internal_static_wcf_UserInfo_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_wcf_UserInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_UserInfo_descriptor,
        new java.lang.String[] { "Wxid", "Name", "Mobile", "Home", });
    internal_static_wcf_DecPath_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_wcf_DecPath_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_DecPath_descriptor,
        new java.lang.String[] { "Src", "Dst", });
    internal_static_wcf_Transfer_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_wcf_Transfer_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_Transfer_descriptor,
        new java.lang.String[] { "Wxid", "Tfid", "Taid", });
    internal_static_wcf_AttachMsg_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_wcf_AttachMsg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_AttachMsg_descriptor,
        new java.lang.String[] { "Id", "Thumb", "Extra", });
    internal_static_wcf_AudioMsg_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_wcf_AudioMsg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_AudioMsg_descriptor,
        new java.lang.String[] { "Id", "Dir", });
    internal_static_wcf_RichText_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_wcf_RichText_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_RichText_descriptor,
        new java.lang.String[] { "Name", "Account", "Title", "Digest", "Url", "Thumburl", "Receiver", });
    internal_static_wcf_PatMsg_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_wcf_PatMsg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_PatMsg_descriptor,
        new java.lang.String[] { "Roomid", "Wxid", });
    internal_static_wcf_OcrMsg_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_wcf_OcrMsg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_OcrMsg_descriptor,
        new java.lang.String[] { "Status", "Result", });
    internal_static_wcf_ForwardMsg_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_wcf_ForwardMsg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_wcf_ForwardMsg_descriptor,
        new java.lang.String[] { "Id", "Receiver", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
