content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // NO CHECKED-IN PROTOBUF GENCODE
  // source: tunnel_service_api.proto
  // Protobuf Java Version: 4.28.2
  
  package com.alicloud.openservices.tablestore.core.protocol;
  
  public final class TunnelServiceApi {
    private TunnelServiceApi() {}
    static {
      com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 2,
        /* suffix= */ "",
        TunnelServiceApi.class.getName());
    }
    public static void registerAllExtensions(
        com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite registry) {
    }
  
    public static void registerAllExtensions(
        com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistry registry) {
      registerAllExtensions(
          (com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite) registry);
    }
    /**
     * Protobuf enum {@code com.alicloud.openservices.tablestore.core.protocol.TunnelType}
     */
    public enum TunnelType
        implements com.aliyun.ots.thirdparty.com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>BaseData = 1;</code>
       */
      BaseData(1),
      /**
       * <code>Stream = 2;</code>
       */
      Stream(2),
      /**
       * <code>BaseAndStream = 3;</code>
       */
      BaseAndStream(3),
      ;
  
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          TunnelType.class.getName());
      }
      /**
       * <code>BaseData = 1;</code>
       */
      public static final int BaseData_VALUE = 1;
      /**
       * <code>Stream = 2;</code>
       */
      public static final int Stream_VALUE = 2;
      /**
       * <code>BaseAndStream = 3;</code>
       */
      public static final int BaseAndStream_VALUE = 3;
  
  
      public final int getNumber() {
        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 TunnelType 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 TunnelType forNumber(int value) {
        switch (value) {
          case 1: return BaseData;
          case 2: return Stream;
          case 3: return BaseAndStream;
          default: return null;
        }
      }
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<TunnelType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<
          TunnelType> internalValueMap =
            new com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<TunnelType>() {
              public TunnelType findValueByNumber(int number) {
                return TunnelType.forNumber(number);
              }
            };
  
      public final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.getDescriptor().getEnumTypes().get(0);
      }
  
      private static final TunnelType[] VALUES = values();
  
      public static TunnelType valueOf(
          com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private TunnelType(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:com.alicloud.openservices.tablestore.core.protocol.TunnelType)
    }
  
    /**
     * Protobuf enum {@code com.alicloud.openservices.tablestore.core.protocol.ChannelStatus}
     */
    public enum ChannelStatus
        implements com.aliyun.ots.thirdparty.com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>OPEN = 1;</code>
       */
      OPEN(1),
      /**
       * <code>CLOSING = 2;</code>
       */
      CLOSING(2),
      /**
       * <code>CLOSE = 3;</code>
       */
      CLOSE(3),
      /**
       * <code>TERMINATED = 4;</code>
       */
      TERMINATED(4),
      ;
  
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ChannelStatus.class.getName());
      }
      /**
       * <code>OPEN = 1;</code>
       */
      public static final int OPEN_VALUE = 1;
      /**
       * <code>CLOSING = 2;</code>
       */
      public static final int CLOSING_VALUE = 2;
      /**
       * <code>CLOSE = 3;</code>
       */
      public static final int CLOSE_VALUE = 3;
      /**
       * <code>TERMINATED = 4;</code>
       */
      public static final int TERMINATED_VALUE = 4;
  
  
      public final int getNumber() {
        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 ChannelStatus 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 ChannelStatus forNumber(int value) {
        switch (value) {
          case 1: return OPEN;
          case 2: return CLOSING;
          case 3: return CLOSE;
          case 4: return TERMINATED;
          default: return null;
        }
      }
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<ChannelStatus>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<
          ChannelStatus> internalValueMap =
            new com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<ChannelStatus>() {
              public ChannelStatus findValueByNumber(int number) {
                return ChannelStatus.forNumber(number);
              }
            };
  
      public final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.getDescriptor().getEnumTypes().get(1);
      }
  
      private static final ChannelStatus[] VALUES = values();
  
      public static ChannelStatus valueOf(
          com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private ChannelStatus(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:com.alicloud.openservices.tablestore.core.protocol.ChannelStatus)
    }
  
    /**
     * Protobuf enum {@code com.alicloud.openservices.tablestore.core.protocol.ActionType}
     */
    public enum ActionType
        implements com.aliyun.ots.thirdparty.com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>PUT_ROW = 1;</code>
       */
      PUT_ROW(1),
      /**
       * <code>UPDATE_ROW = 2;</code>
       */
      UPDATE_ROW(2),
      /**
       * <code>DELETE_ROW = 3;</code>
       */
      DELETE_ROW(3),
      ;
  
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ActionType.class.getName());
      }
      /**
       * <code>PUT_ROW = 1;</code>
       */
      public static final int PUT_ROW_VALUE = 1;
      /**
       * <code>UPDATE_ROW = 2;</code>
       */
      public static final int UPDATE_ROW_VALUE = 2;
      /**
       * <code>DELETE_ROW = 3;</code>
       */
      public static final int DELETE_ROW_VALUE = 3;
  
  
      public final int getNumber() {
        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 ActionType 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 ActionType forNumber(int value) {
        switch (value) {
          case 1: return PUT_ROW;
          case 2: return UPDATE_ROW;
          case 3: return DELETE_ROW;
          default: return null;
        }
      }
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<ActionType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<
          ActionType> internalValueMap =
            new com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<ActionType>() {
              public ActionType findValueByNumber(int number) {
                return ActionType.forNumber(number);
              }
            };
  
      public final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.getDescriptor().getEnumTypes().get(2);
      }
  
      private static final ActionType[] VALUES = values();
  
      public static ActionType valueOf(
          com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private ActionType(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:com.alicloud.openservices.tablestore.core.protocol.ActionType)
    }
  
    /**
     * Protobuf enum {@code com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag}
     */
    public enum StartOffsetFlag
        implements com.aliyun.ots.thirdparty.com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>LATEST = 0;</code>
       */
      LATEST(0),
      /**
       * <code>EARLIEST = 1;</code>
       */
      EARLIEST(1),
      ;
  
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          StartOffsetFlag.class.getName());
      }
      /**
       * <code>LATEST = 0;</code>
       */
      public static final int LATEST_VALUE = 0;
      /**
       * <code>EARLIEST = 1;</code>
       */
      public static final int EARLIEST_VALUE = 1;
  
  
      public final int getNumber() {
        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 StartOffsetFlag 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 StartOffsetFlag forNumber(int value) {
        switch (value) {
          case 0: return LATEST;
          case 1: return EARLIEST;
          default: return null;
        }
      }
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<StartOffsetFlag>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<
          StartOffsetFlag> internalValueMap =
            new com.aliyun.ots.thirdparty.com.google.protobuf.Internal.EnumLiteMap<StartOffsetFlag>() {
              public StartOffsetFlag findValueByNumber(int number) {
                return StartOffsetFlag.forNumber(number);
              }
            };
  
      public final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.getDescriptor().getEnumTypes().get(3);
      }
  
      private static final StartOffsetFlag[] VALUES = values();
  
      public static StartOffsetFlag valueOf(
          com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private StartOffsetFlag(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag)
    }
  
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.Error)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string code = 1;</code>
       * @return Whether the code field is set.
       */
      boolean hasCode();
      /**
       * <code>required string code = 1;</code>
       * @return The code.
       */
      java.lang.String getCode();
      /**
       * <code>required string code = 1;</code>
       * @return The bytes for code.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getCodeBytes();
  
      /**
       * <code>optional string message = 2;</code>
       * @return Whether the message field is set.
       */
      boolean hasMessage();
      /**
       * <code>optional string message = 2;</code>
       * @return The message.
       */
      java.lang.String getMessage();
      /**
       * <code>optional string message = 2;</code>
       * @return The bytes for message.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getMessageBytes();
  
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Error}
     */
    public static final class Error extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          Error.class.getName());
      }
      // Use Error.newBuilder() to construct.
      private Error(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private Error() {
        code_ = "";
        message_ = "";
        tunnelId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error.Builder.class);
      }
  
      private int bitField0_;
      public static final int CODE_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object code_ = "";
      /**
       * <code>required string code = 1;</code>
       * @return Whether the code field is set.
       */
      @java.lang.Override
      public boolean hasCode() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string code = 1;</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.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            code_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string code = 1;</code>
       * @return The bytes for code.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getCodeBytes() {
        java.lang.Object ref = code_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          code_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int MESSAGE_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object message_ = "";
      /**
       * <code>optional string message = 2;</code>
       * @return Whether the message field is set.
       */
      @java.lang.Override
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string message = 2;</code>
       * @return The message.
       */
      @java.lang.Override
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            message_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string message = 2;</code>
       * @return The bytes for message.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TUNNEL_ID_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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;
  
        if (!hasCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, code_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, message_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 3, tunnelId_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, code_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, message_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(3, tunnelId_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error) obj;
  
        if (hasCode() != other.hasCode()) return false;
        if (hasCode()) {
          if (!getCode()
              .equals(other.getCode())) return false;
        }
        if (hasMessage() != other.hasMessage()) return false;
        if (hasMessage()) {
          if (!getMessage()
              .equals(other.getMessage())) return false;
        }
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCode()) {
          hash = (37 * hash) + CODE_FIELD_NUMBER;
          hash = (53 * hash) + getCode().hashCode();
        }
        if (hasMessage()) {
          hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
          hash = (53 * hash) + getMessage().hashCode();
        }
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Error}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.Error)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ErrorOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          code_ = "";
          message_ = "";
          tunnelId_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.code_ = code_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.message_ = message_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error.getDefaultInstance()) return this;
          if (other.hasCode()) {
            code_ = other.code_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasMessage()) {
            message_ = other.message_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasCode()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  code_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  message_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object code_ = "";
        /**
         * <code>required string code = 1;</code>
         * @return Whether the code field is set.
         */
        public boolean hasCode() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string code = 1;</code>
         * @return The code.
         */
        public java.lang.String getCode() {
          java.lang.Object ref = code_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              code_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string code = 1;</code>
         * @return The bytes for code.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getCodeBytes() {
          java.lang.Object ref = code_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            code_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string code = 1;</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;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string code = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearCode() {
          code_ = getDefaultInstance().getCode();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string code = 1;</code>
         * @param value The bytes for code to set.
         * @return This builder for chaining.
         */
        public Builder setCodeBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          code_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object message_ = "";
        /**
         * <code>optional string message = 2;</code>
         * @return Whether the message field is set.
         */
        public boolean hasMessage() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string message = 2;</code>
         * @return The message.
         */
        public java.lang.String getMessage() {
          java.lang.Object ref = message_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              message_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string message = 2;</code>
         * @return The bytes for message.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getMessageBytes() {
          java.lang.Object ref = message_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            message_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string message = 2;</code>
         * @param value The message to set.
         * @return This builder for chaining.
         */
        public Builder setMessage(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          message_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>optional string message = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearMessage() {
          message_ = getDefaultInstance().getMessage();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>optional string message = 2;</code>
         * @param value The bytes for message to set.
         * @return This builder for chaining.
         */
        public Builder setMessageBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          message_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.Error)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.Error)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Error>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<Error>() {
        @java.lang.Override
        public Error parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Error> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Error> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface TunnelOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.Tunnel)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string table_name = 1;</code>
       * @return Whether the tableName field is set.
       */
      boolean hasTableName();
      /**
       * <code>required string table_name = 1;</code>
       * @return The tableName.
       */
      java.lang.String getTableName();
      /**
       * <code>required string table_name = 1;</code>
       * @return The bytes for tableName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes();
  
      /**
       * <code>required string tunnel_name = 3;</code>
       * @return Whether the tunnelName field is set.
       */
      boolean hasTunnelName();
      /**
       * <code>required string tunnel_name = 3;</code>
       * @return The tunnelName.
       */
      java.lang.String getTunnelName();
      /**
       * <code>required string tunnel_name = 3;</code>
       * @return The bytes for tunnelName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelNameBytes();
  
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelType tunnel_type = 4;</code>
       * @return Whether the tunnelType field is set.
       */
      boolean hasTunnelType();
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelType tunnel_type = 4;</code>
       * @return The tunnelType.
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType getTunnelType();
  
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
       * @return Whether the streamTunnelConfig field is set.
       */
      boolean hasStreamTunnelConfig();
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
       * @return The streamTunnelConfig.
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig getStreamTunnelConfig();
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder getStreamTunnelConfigOrBuilder();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Tunnel}
     */
    public static final class Tunnel extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.Tunnel)
        TunnelOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          Tunnel.class.getName());
      }
      // Use Tunnel.newBuilder() to construct.
      private Tunnel(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private Tunnel() {
        tableName_ = "";
        tunnelName_ = "";
        tunnelType_ = 1;
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.Builder.class);
      }
  
      private int bitField0_;
      public static final int TABLE_NAME_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tableName_ = "";
      /**
       * <code>required string table_name = 1;</code>
       * @return Whether the tableName field is set.
       */
      @java.lang.Override
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string table_name = 1;</code>
       * @return The tableName.
       */
      @java.lang.Override
      public java.lang.String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tableName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string table_name = 1;</code>
       * @return The bytes for tableName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TUNNEL_NAME_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelName_ = "";
      /**
       * <code>required string tunnel_name = 3;</code>
       * @return Whether the tunnelName field is set.
       */
      @java.lang.Override
      public boolean hasTunnelName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string tunnel_name = 3;</code>
       * @return The tunnelName.
       */
      @java.lang.Override
      public java.lang.String getTunnelName() {
        java.lang.Object ref = tunnelName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_name = 3;</code>
       * @return The bytes for tunnelName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelNameBytes() {
        java.lang.Object ref = tunnelName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TUNNEL_TYPE_FIELD_NUMBER = 4;
      private int tunnelType_ = 1;
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelType tunnel_type = 4;</code>
       * @return Whether the tunnelType field is set.
       */
      @java.lang.Override public boolean hasTunnelType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelType tunnel_type = 4;</code>
       * @return The tunnelType.
       */
      @java.lang.Override public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType getTunnelType() {
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType result = com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType.forNumber(tunnelType_);
        return result == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType.BaseData : result;
      }
  
      public static final int STREAMTUNNELCONFIG_FIELD_NUMBER = 5;
      private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig streamTunnelConfig_;
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
       * @return Whether the streamTunnelConfig field is set.
       */
      @java.lang.Override
      public boolean hasStreamTunnelConfig() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
       * @return The streamTunnelConfig.
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig getStreamTunnelConfig() {
        return streamTunnelConfig_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance() : streamTunnelConfig_;
      }
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder getStreamTunnelConfigOrBuilder() {
        return streamTunnelConfig_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance() : streamTunnelConfig_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTunnelName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTunnelType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tableName_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 3, tunnelName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeEnum(4, tunnelType_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeMessage(5, getStreamTunnelConfig());
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tableName_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(3, tunnelName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeEnumSize(4, tunnelType_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, getStreamTunnelConfig());
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel) obj;
  
        if (hasTableName() != other.hasTableName()) return false;
        if (hasTableName()) {
          if (!getTableName()
              .equals(other.getTableName())) return false;
        }
        if (hasTunnelName() != other.hasTunnelName()) return false;
        if (hasTunnelName()) {
          if (!getTunnelName()
              .equals(other.getTunnelName())) return false;
        }
        if (hasTunnelType() != other.hasTunnelType()) return false;
        if (hasTunnelType()) {
          if (tunnelType_ != other.tunnelType_) return false;
        }
        if (hasStreamTunnelConfig() != other.hasStreamTunnelConfig()) return false;
        if (hasStreamTunnelConfig()) {
          if (!getStreamTunnelConfig()
              .equals(other.getStreamTunnelConfig())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTableName()) {
          hash = (37 * hash) + TABLE_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (hasTunnelName()) {
          hash = (37 * hash) + TUNNEL_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelName().hashCode();
        }
        if (hasTunnelType()) {
          hash = (37 * hash) + TUNNEL_TYPE_FIELD_NUMBER;
          hash = (53 * hash) + tunnelType_;
        }
        if (hasStreamTunnelConfig()) {
          hash = (37 * hash) + STREAMTUNNELCONFIG_FIELD_NUMBER;
          hash = (53 * hash) + getStreamTunnelConfig().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Tunnel}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.Tunnel)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
                  .alwaysUseFieldBuilders) {
            getStreamTunnelConfigFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tableName_ = "";
          tunnelName_ = "";
          tunnelType_ = 1;
          streamTunnelConfig_ = null;
          if (streamTunnelConfigBuilder_ != null) {
            streamTunnelConfigBuilder_.dispose();
            streamTunnelConfigBuilder_ = null;
          }
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tableName_ = tableName_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.tunnelName_ = tunnelName_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.tunnelType_ = tunnelType_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.streamTunnelConfig_ = streamTunnelConfigBuilder_ == null
                ? streamTunnelConfig_
                : streamTunnelConfigBuilder_.build();
            to_bitField0_ |= 0x00000008;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.getDefaultInstance()) return this;
          if (other.hasTableName()) {
            tableName_ = other.tableName_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasTunnelName()) {
            tunnelName_ = other.tunnelName_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasTunnelType()) {
            setTunnelType(other.getTunnelType());
          }
          if (other.hasStreamTunnelConfig()) {
            mergeStreamTunnelConfig(other.getStreamTunnelConfig());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTableName()) {
            return false;
          }
          if (!hasTunnelName()) {
            return false;
          }
          if (!hasTunnelType()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tableName_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 26: {
                  tunnelName_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 26
                case 32: {
                  int tmpRaw = input.readEnum();
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType tmpValue =
                      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType.forNumber(tmpRaw);
                  if (tmpValue == null) {
                    mergeUnknownVarintField(4, tmpRaw);
                  } else {
                    tunnelType_ = tmpRaw;
                    bitField0_ |= 0x00000004;
                  }
                  break;
                } // case 32
                case 42: {
                  input.readMessage(
                      getStreamTunnelConfigFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000008;
                  break;
                } // case 42
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tableName_ = "";
        /**
         * <code>required string table_name = 1;</code>
         * @return Whether the tableName field is set.
         */
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string table_name = 1;</code>
         * @return The tableName.
         */
        public java.lang.String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tableName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string table_name = 1;</code>
         * @return The bytes for tableName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTableNameBytes() {
          java.lang.Object ref = tableName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tableName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string table_name = 1;</code>
         * @param value The tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string table_name = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTableName() {
          tableName_ = getDefaultInstance().getTableName();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string table_name = 1;</code>
         * @param value The bytes for tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object tunnelName_ = "";
        /**
         * <code>required string tunnel_name = 3;</code>
         * @return Whether the tunnelName field is set.
         */
        public boolean hasTunnelName() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string tunnel_name = 3;</code>
         * @return The tunnelName.
         */
        public java.lang.String getTunnelName() {
          java.lang.Object ref = tunnelName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_name = 3;</code>
         * @return The bytes for tunnelName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelNameBytes() {
          java.lang.Object ref = tunnelName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_name = 3;</code>
         * @param value The tunnelName to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelName_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_name = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelName() {
          tunnelName_ = getDefaultInstance().getTunnelName();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_name = 3;</code>
         * @param value The bytes for tunnelName to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelName_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private int tunnelType_ = 1;
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelType tunnel_type = 4;</code>
         * @return Whether the tunnelType field is set.
         */
        @java.lang.Override public boolean hasTunnelType() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelType tunnel_type = 4;</code>
         * @return The tunnelType.
         */
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType getTunnelType() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType result = com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType.forNumber(tunnelType_);
          return result == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType.BaseData : result;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelType tunnel_type = 4;</code>
         * @param value The tunnelType to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelType(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000004;
          tunnelType_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelType tunnel_type = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelType() {
          bitField0_ = (bitField0_ & ~0x00000004);
          tunnelType_ = 1;
          onChanged();
          return this;
        }
  
        private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig streamTunnelConfig_;
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder> streamTunnelConfigBuilder_;
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
         * @return Whether the streamTunnelConfig field is set.
         */
        public boolean hasStreamTunnelConfig() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
         * @return The streamTunnelConfig.
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig getStreamTunnelConfig() {
          if (streamTunnelConfigBuilder_ == null) {
            return streamTunnelConfig_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance() : streamTunnelConfig_;
          } else {
            return streamTunnelConfigBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
         */
        public Builder setStreamTunnelConfig(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig value) {
          if (streamTunnelConfigBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            streamTunnelConfig_ = value;
          } else {
            streamTunnelConfigBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
         */
        public Builder setStreamTunnelConfig(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder builderForValue) {
          if (streamTunnelConfigBuilder_ == null) {
            streamTunnelConfig_ = builderForValue.build();
          } else {
            streamTunnelConfigBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
         */
        public Builder mergeStreamTunnelConfig(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig value) {
          if (streamTunnelConfigBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0) &&
              streamTunnelConfig_ != null &&
              streamTunnelConfig_ != com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance()) {
              getStreamTunnelConfigBuilder().mergeFrom(value);
            } else {
              streamTunnelConfig_ = value;
            }
          } else {
            streamTunnelConfigBuilder_.mergeFrom(value);
          }
          if (streamTunnelConfig_ != null) {
            bitField0_ |= 0x00000008;
            onChanged();
          }
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
         */
        public Builder clearStreamTunnelConfig() {
          bitField0_ = (bitField0_ & ~0x00000008);
          streamTunnelConfig_ = null;
          if (streamTunnelConfigBuilder_ != null) {
            streamTunnelConfigBuilder_.dispose();
            streamTunnelConfigBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder getStreamTunnelConfigBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getStreamTunnelConfigFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder getStreamTunnelConfigOrBuilder() {
          if (streamTunnelConfigBuilder_ != null) {
            return streamTunnelConfigBuilder_.getMessageOrBuilder();
          } else {
            return streamTunnelConfig_ == null ?
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance() : streamTunnelConfig_;
          }
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig StreamTunnelConfig = 5;</code>
         */
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder> 
            getStreamTunnelConfigFieldBuilder() {
          if (streamTunnelConfigBuilder_ == null) {
            streamTunnelConfigBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder>(
                    getStreamTunnelConfig(),
                    getParentForChildren(),
                    isClean());
            streamTunnelConfig_ = null;
          }
          return streamTunnelConfigBuilder_;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.Tunnel)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.Tunnel)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Tunnel>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<Tunnel>() {
        @java.lang.Override
        public Tunnel parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Tunnel> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Tunnel> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CreateTunnelRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
       * @return Whether the tunnel field is set.
       */
      boolean hasTunnel();
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
       * @return The tunnel.
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel getTunnel();
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelOrBuilder getTunnelOrBuilder();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.CreateTunnelRequest}
     */
    public static final class CreateTunnelRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelRequest)
        CreateTunnelRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          CreateTunnelRequest.class.getName());
      }
      // Use CreateTunnelRequest.newBuilder() to construct.
      private CreateTunnelRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private CreateTunnelRequest() {
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_FIELD_NUMBER = 1;
      private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel tunnel_;
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
       * @return Whether the tunnel field is set.
       */
      @java.lang.Override
      public boolean hasTunnel() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
       * @return The tunnel.
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel getTunnel() {
        return tunnel_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.getDefaultInstance() : tunnel_;
      }
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelOrBuilder getTunnelOrBuilder() {
        return tunnel_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.getDefaultInstance() : tunnel_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasTunnel()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getTunnel().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getTunnel());
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getTunnel());
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest) obj;
  
        if (hasTunnel() != other.hasTunnel()) return false;
        if (hasTunnel()) {
          if (!getTunnel()
              .equals(other.getTunnel())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnel()) {
          hash = (37 * hash) + TUNNEL_FIELD_NUMBER;
          hash = (53 * hash) + getTunnel().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.CreateTunnelRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
                  .alwaysUseFieldBuilders) {
            getTunnelFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnel_ = null;
          if (tunnelBuilder_ != null) {
            tunnelBuilder_.dispose();
            tunnelBuilder_ = null;
          }
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnel_ = tunnelBuilder_ == null
                ? tunnel_
                : tunnelBuilder_.build();
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest.getDefaultInstance()) return this;
          if (other.hasTunnel()) {
            mergeTunnel(other.getTunnel());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnel()) {
            return false;
          }
          if (!getTunnel().isInitialized()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getTunnelFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel tunnel_;
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelOrBuilder> tunnelBuilder_;
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
         * @return Whether the tunnel field is set.
         */
        public boolean hasTunnel() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
         * @return The tunnel.
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel getTunnel() {
          if (tunnelBuilder_ == null) {
            return tunnel_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.getDefaultInstance() : tunnel_;
          } else {
            return tunnelBuilder_.getMessage();
          }
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
         */
        public Builder setTunnel(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel value) {
          if (tunnelBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            tunnel_ = value;
          } else {
            tunnelBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
         */
        public Builder setTunnel(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.Builder builderForValue) {
          if (tunnelBuilder_ == null) {
            tunnel_ = builderForValue.build();
          } else {
            tunnelBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
         */
        public Builder mergeTunnel(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel value) {
          if (tunnelBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
              tunnel_ != null &&
              tunnel_ != com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.getDefaultInstance()) {
              getTunnelBuilder().mergeFrom(value);
            } else {
              tunnel_ = value;
            }
          } else {
            tunnelBuilder_.mergeFrom(value);
          }
          if (tunnel_ != null) {
            bitField0_ |= 0x00000001;
            onChanged();
          }
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
         */
        public Builder clearTunnel() {
          bitField0_ = (bitField0_ & ~0x00000001);
          tunnel_ = null;
          if (tunnelBuilder_ != null) {
            tunnelBuilder_.dispose();
            tunnelBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.Builder getTunnelBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getTunnelFieldBuilder().getBuilder();
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelOrBuilder getTunnelOrBuilder() {
          if (tunnelBuilder_ != null) {
            return tunnelBuilder_.getMessageOrBuilder();
          } else {
            return tunnel_ == null ?
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.getDefaultInstance() : tunnel_;
          }
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.Tunnel tunnel = 1;</code>
         */
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelOrBuilder> 
            getTunnelFieldBuilder() {
          if (tunnelBuilder_ == null) {
            tunnelBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Tunnel.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelOrBuilder>(
                    getTunnel(),
                    getParentForChildren(),
                    isClean());
            tunnel_ = null;
          }
          return tunnelBuilder_;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CreateTunnelRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<CreateTunnelRequest>() {
        @java.lang.Override
        public CreateTunnelRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CreateTunnelRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CreateTunnelRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CreateTunnelResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.CreateTunnelResponse}
     */
    public static final class CreateTunnelResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelResponse)
        CreateTunnelResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          CreateTunnelResponse.class.getName());
      }
      // Use CreateTunnelResponse.newBuilder() to construct.
      private CreateTunnelResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private CreateTunnelResponse() {
        tunnelId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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;
  
        if (!hasTunnelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tunnelId_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tunnelId_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse) obj;
  
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.CreateTunnelResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnelId_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse.getDefaultInstance()) return this;
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnelId()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.CreateTunnelResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CreateTunnelResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<CreateTunnelResponse>() {
        @java.lang.Override
        public CreateTunnelResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CreateTunnelResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CreateTunnelResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CreateTunnelResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface DeleteTunnelRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string table_name = 1;</code>
       * @return Whether the tableName field is set.
       */
      boolean hasTableName();
      /**
       * <code>required string table_name = 1;</code>
       * @return The tableName.
       */
      java.lang.String getTableName();
      /**
       * <code>required string table_name = 1;</code>
       * @return The bytes for tableName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes();
  
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return Whether the tunnelName field is set.
       */
      boolean hasTunnelName();
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return The tunnelName.
       */
      java.lang.String getTunnelName();
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return The bytes for tunnelName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelNameBytes();
  
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelRequest}
     */
    public static final class DeleteTunnelRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelRequest)
        DeleteTunnelRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          DeleteTunnelRequest.class.getName());
      }
      // Use DeleteTunnelRequest.newBuilder() to construct.
      private DeleteTunnelRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private DeleteTunnelRequest() {
        tableName_ = "";
        tunnelName_ = "";
        tunnelId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TABLE_NAME_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tableName_ = "";
      /**
       * <code>required string table_name = 1;</code>
       * @return Whether the tableName field is set.
       */
      @java.lang.Override
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string table_name = 1;</code>
       * @return The tableName.
       */
      @java.lang.Override
      public java.lang.String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tableName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string table_name = 1;</code>
       * @return The bytes for tableName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TUNNEL_NAME_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelName_ = "";
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return Whether the tunnelName field is set.
       */
      @java.lang.Override
      public boolean hasTunnelName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return The tunnelName.
       */
      @java.lang.Override
      public java.lang.String getTunnelName() {
        java.lang.Object ref = tunnelName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return The bytes for tunnelName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelNameBytes() {
        java.lang.Object ref = tunnelName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TUNNEL_ID_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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;
  
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTunnelName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tableName_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, tunnelName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 3, tunnelId_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tableName_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, tunnelName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(3, tunnelId_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest) obj;
  
        if (hasTableName() != other.hasTableName()) return false;
        if (hasTableName()) {
          if (!getTableName()
              .equals(other.getTableName())) return false;
        }
        if (hasTunnelName() != other.hasTunnelName()) return false;
        if (hasTunnelName()) {
          if (!getTunnelName()
              .equals(other.getTunnelName())) return false;
        }
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTableName()) {
          hash = (37 * hash) + TABLE_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (hasTunnelName()) {
          hash = (37 * hash) + TUNNEL_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelName().hashCode();
        }
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tableName_ = "";
          tunnelName_ = "";
          tunnelId_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tableName_ = tableName_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.tunnelName_ = tunnelName_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest.getDefaultInstance()) return this;
          if (other.hasTableName()) {
            tableName_ = other.tableName_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasTunnelName()) {
            tunnelName_ = other.tunnelName_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTableName()) {
            return false;
          }
          if (!hasTunnelName()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tableName_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  tunnelName_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tableName_ = "";
        /**
         * <code>required string table_name = 1;</code>
         * @return Whether the tableName field is set.
         */
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string table_name = 1;</code>
         * @return The tableName.
         */
        public java.lang.String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tableName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string table_name = 1;</code>
         * @return The bytes for tableName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTableNameBytes() {
          java.lang.Object ref = tableName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tableName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string table_name = 1;</code>
         * @param value The tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string table_name = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTableName() {
          tableName_ = getDefaultInstance().getTableName();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string table_name = 1;</code>
         * @param value The bytes for tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object tunnelName_ = "";
        /**
         * <code>required string tunnel_name = 2;</code>
         * @return Whether the tunnelName field is set.
         */
        public boolean hasTunnelName() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @return The tunnelName.
         */
        public java.lang.String getTunnelName() {
          java.lang.Object ref = tunnelName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @return The bytes for tunnelName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelNameBytes() {
          java.lang.Object ref = tunnelName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @param value The tunnelName to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelName_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelName() {
          tunnelName_ = getDefaultInstance().getTunnelName();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @param value The bytes for tunnelName to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelName_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DeleteTunnelRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<DeleteTunnelRequest>() {
        @java.lang.Override
        public DeleteTunnelRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DeleteTunnelRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DeleteTunnelRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface DeleteTunnelResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelResponse}
     */
    public static final class DeleteTunnelResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelResponse)
        DeleteTunnelResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          DeleteTunnelResponse.class.getName());
      }
      // Use DeleteTunnelResponse.newBuilder() to construct.
      private DeleteTunnelResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private DeleteTunnelResponse() {
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse.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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse) obj;
  
        if (!getUnknownFields().equals(other.getUnknownFields())) 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) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse(this);
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.DeleteTunnelResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DeleteTunnelResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<DeleteTunnelResponse>() {
        @java.lang.Override
        public DeleteTunnelResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DeleteTunnelResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DeleteTunnelResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DeleteTunnelResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ListTunnelRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ListTunnelRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional string table_name = 1;</code>
       * @return Whether the tableName field is set.
       */
      boolean hasTableName();
      /**
       * <code>optional string table_name = 1;</code>
       * @return The tableName.
       */
      java.lang.String getTableName();
      /**
       * <code>optional string table_name = 1;</code>
       * @return The bytes for tableName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ListTunnelRequest}
     */
    public static final class ListTunnelRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ListTunnelRequest)
        ListTunnelRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ListTunnelRequest.class.getName());
      }
      // Use ListTunnelRequest.newBuilder() to construct.
      private ListTunnelRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ListTunnelRequest() {
        tableName_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TABLE_NAME_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tableName_ = "";
      /**
       * <code>optional string table_name = 1;</code>
       * @return Whether the tableName field is set.
       */
      @java.lang.Override
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string table_name = 1;</code>
       * @return The tableName.
       */
      @java.lang.Override
      public java.lang.String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tableName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string table_name = 1;</code>
       * @return The bytes for tableName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tableName_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tableName_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest) obj;
  
        if (hasTableName() != other.hasTableName()) return false;
        if (hasTableName()) {
          if (!getTableName()
              .equals(other.getTableName())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTableName()) {
          hash = (37 * hash) + TABLE_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ListTunnelRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ListTunnelRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tableName_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tableName_ = tableName_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest.getDefaultInstance()) return this;
          if (other.hasTableName()) {
            tableName_ = other.tableName_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tableName_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tableName_ = "";
        /**
         * <code>optional string table_name = 1;</code>
         * @return Whether the tableName field is set.
         */
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional string table_name = 1;</code>
         * @return The tableName.
         */
        public java.lang.String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tableName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string table_name = 1;</code>
         * @return The bytes for tableName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTableNameBytes() {
          java.lang.Object ref = tableName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tableName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string table_name = 1;</code>
         * @param value The tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>optional string table_name = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTableName() {
          tableName_ = getDefaultInstance().getTableName();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>optional string table_name = 1;</code>
         * @param value The bytes for tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ListTunnelRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ListTunnelRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ListTunnelRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ListTunnelRequest>() {
        @java.lang.Override
        public ListTunnelRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ListTunnelRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ListTunnelRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface TunnelInfoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.TunnelInfo)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
  
      /**
       * <code>required string tunnel_type = 2;</code>
       * @return Whether the tunnelType field is set.
       */
      boolean hasTunnelType();
      /**
       * <code>required string tunnel_type = 2;</code>
       * @return The tunnelType.
       */
      java.lang.String getTunnelType();
      /**
       * <code>required string tunnel_type = 2;</code>
       * @return The bytes for tunnelType.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelTypeBytes();
  
      /**
       * <code>required string table_name = 3;</code>
       * @return Whether the tableName field is set.
       */
      boolean hasTableName();
      /**
       * <code>required string table_name = 3;</code>
       * @return The tableName.
       */
      java.lang.String getTableName();
      /**
       * <code>required string table_name = 3;</code>
       * @return The bytes for tableName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes();
  
      /**
       * <code>required string instance_name = 4;</code>
       * @return Whether the instanceName field is set.
       */
      boolean hasInstanceName();
      /**
       * <code>required string instance_name = 4;</code>
       * @return The instanceName.
       */
      java.lang.String getInstanceName();
      /**
       * <code>required string instance_name = 4;</code>
       * @return The bytes for instanceName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getInstanceNameBytes();
  
      /**
       * <code>required string stream_id = 5;</code>
       * @return Whether the streamId field is set.
       */
      boolean hasStreamId();
      /**
       * <code>required string stream_id = 5;</code>
       * @return The streamId.
       */
      java.lang.String getStreamId();
      /**
       * <code>required string stream_id = 5;</code>
       * @return The bytes for streamId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getStreamIdBytes();
  
      /**
       * <code>required string stage = 6;</code>
       * @return Whether the stage field is set.
       */
      boolean hasStage();
      /**
       * <code>required string stage = 6;</code>
       * @return The stage.
       */
      java.lang.String getStage();
      /**
       * <code>required string stage = 6;</code>
       * @return The bytes for stage.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getStageBytes();
  
      /**
       * <code>optional bool expired = 7;</code>
       * @return Whether the expired field is set.
       */
      boolean hasExpired();
      /**
       * <code>optional bool expired = 7;</code>
       * @return The expired.
       */
      boolean getExpired();
  
      /**
       * <code>optional string tunnel_name = 8;</code>
       * @return Whether the tunnelName field is set.
       */
      boolean hasTunnelName();
      /**
       * <code>optional string tunnel_name = 8;</code>
       * @return The tunnelName.
       */
      java.lang.String getTunnelName();
      /**
       * <code>optional string tunnel_name = 8;</code>
       * @return The bytes for tunnelName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelNameBytes();
  
      /**
       * <code>optional bool public = 9;</code>
       * @return Whether the public field is set.
       */
      boolean hasPublic();
      /**
       * <code>optional bool public = 9;</code>
       * @return The public.
       */
      boolean getPublic();
  
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
       * @return Whether the streamTunnelConfig field is set.
       */
      boolean hasStreamTunnelConfig();
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
       * @return The streamTunnelConfig.
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig getStreamTunnelConfig();
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder getStreamTunnelConfigOrBuilder();
  
      /**
       * <code>optional int64 create_time = 11;</code>
       * @return Whether the createTime field is set.
       */
      boolean hasCreateTime();
      /**
       * <code>optional int64 create_time = 11;</code>
       * @return The createTime.
       */
      long getCreateTime();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.TunnelInfo}
     */
    public static final class TunnelInfo extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.TunnelInfo)
        TunnelInfoOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          TunnelInfo.class.getName());
      }
      // Use TunnelInfo.newBuilder() to construct.
      private TunnelInfo(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private TunnelInfo() {
        tunnelId_ = "";
        tunnelType_ = "";
        tableName_ = "";
        instanceName_ = "";
        streamId_ = "";
        stage_ = "";
        tunnelName_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TUNNEL_TYPE_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelType_ = "";
      /**
       * <code>required string tunnel_type = 2;</code>
       * @return Whether the tunnelType field is set.
       */
      @java.lang.Override
      public boolean hasTunnelType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string tunnel_type = 2;</code>
       * @return The tunnelType.
       */
      @java.lang.Override
      public java.lang.String getTunnelType() {
        java.lang.Object ref = tunnelType_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelType_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_type = 2;</code>
       * @return The bytes for tunnelType.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelTypeBytes() {
        java.lang.Object ref = tunnelType_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelType_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TABLE_NAME_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tableName_ = "";
      /**
       * <code>required string table_name = 3;</code>
       * @return Whether the tableName field is set.
       */
      @java.lang.Override
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required string table_name = 3;</code>
       * @return The tableName.
       */
      @java.lang.Override
      public java.lang.String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tableName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string table_name = 3;</code>
       * @return The bytes for tableName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int INSTANCE_NAME_FIELD_NUMBER = 4;
      @SuppressWarnings("serial")
      private volatile java.lang.Object instanceName_ = "";
      /**
       * <code>required string instance_name = 4;</code>
       * @return Whether the instanceName field is set.
       */
      @java.lang.Override
      public boolean hasInstanceName() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required string instance_name = 4;</code>
       * @return The instanceName.
       */
      @java.lang.Override
      public java.lang.String getInstanceName() {
        java.lang.Object ref = instanceName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            instanceName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string instance_name = 4;</code>
       * @return The bytes for instanceName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getInstanceNameBytes() {
        java.lang.Object ref = instanceName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          instanceName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int STREAM_ID_FIELD_NUMBER = 5;
      @SuppressWarnings("serial")
      private volatile java.lang.Object streamId_ = "";
      /**
       * <code>required string stream_id = 5;</code>
       * @return Whether the streamId field is set.
       */
      @java.lang.Override
      public boolean hasStreamId() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required string stream_id = 5;</code>
       * @return The streamId.
       */
      @java.lang.Override
      public java.lang.String getStreamId() {
        java.lang.Object ref = streamId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            streamId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string stream_id = 5;</code>
       * @return The bytes for streamId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getStreamIdBytes() {
        java.lang.Object ref = streamId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          streamId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int STAGE_FIELD_NUMBER = 6;
      @SuppressWarnings("serial")
      private volatile java.lang.Object stage_ = "";
      /**
       * <code>required string stage = 6;</code>
       * @return Whether the stage field is set.
       */
      @java.lang.Override
      public boolean hasStage() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>required string stage = 6;</code>
       * @return The stage.
       */
      @java.lang.Override
      public java.lang.String getStage() {
        java.lang.Object ref = stage_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            stage_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string stage = 6;</code>
       * @return The bytes for stage.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getStageBytes() {
        java.lang.Object ref = stage_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stage_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int EXPIRED_FIELD_NUMBER = 7;
      private boolean expired_ = false;
      /**
       * <code>optional bool expired = 7;</code>
       * @return Whether the expired field is set.
       */
      @java.lang.Override
      public boolean hasExpired() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional bool expired = 7;</code>
       * @return The expired.
       */
      @java.lang.Override
      public boolean getExpired() {
        return expired_;
      }
  
      public static final int TUNNEL_NAME_FIELD_NUMBER = 8;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelName_ = "";
      /**
       * <code>optional string tunnel_name = 8;</code>
       * @return Whether the tunnelName field is set.
       */
      @java.lang.Override
      public boolean hasTunnelName() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional string tunnel_name = 8;</code>
       * @return The tunnelName.
       */
      @java.lang.Override
      public java.lang.String getTunnelName() {
        java.lang.Object ref = tunnelName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string tunnel_name = 8;</code>
       * @return The bytes for tunnelName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelNameBytes() {
        java.lang.Object ref = tunnelName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int PUBLIC_FIELD_NUMBER = 9;
      private boolean public_ = false;
      /**
       * <code>optional bool public = 9;</code>
       * @return Whether the public field is set.
       */
      @java.lang.Override
      public boolean hasPublic() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional bool public = 9;</code>
       * @return The public.
       */
      @java.lang.Override
      public boolean getPublic() {
        return public_;
      }
  
      public static final int STREAM_TUNNEL_CONFIG_FIELD_NUMBER = 10;
      private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig streamTunnelConfig_;
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
       * @return Whether the streamTunnelConfig field is set.
       */
      @java.lang.Override
      public boolean hasStreamTunnelConfig() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
       * @return The streamTunnelConfig.
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig getStreamTunnelConfig() {
        return streamTunnelConfig_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance() : streamTunnelConfig_;
      }
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder getStreamTunnelConfigOrBuilder() {
        return streamTunnelConfig_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance() : streamTunnelConfig_;
      }
  
      public static final int CREATE_TIME_FIELD_NUMBER = 11;
      private long createTime_ = 0L;
      /**
       * <code>optional int64 create_time = 11;</code>
       * @return Whether the createTime field is set.
       */
      @java.lang.Override
      public boolean hasCreateTime() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional int64 create_time = 11;</code>
       * @return The createTime.
       */
      @java.lang.Override
      public long getCreateTime() {
        return createTime_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasTunnelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTunnelType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasInstanceName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStreamId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStage()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, tunnelType_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 3, tableName_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 4, instanceName_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 5, streamId_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 6, stage_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          output.writeBool(7, expired_);
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 8, tunnelName_);
        }
        if (((bitField0_ & 0x00000100) != 0)) {
          output.writeBool(9, public_);
        }
        if (((bitField0_ & 0x00000200) != 0)) {
          output.writeMessage(10, getStreamTunnelConfig());
        }
        if (((bitField0_ & 0x00000400) != 0)) {
          output.writeInt64(11, createTime_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, tunnelType_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(3, tableName_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(4, instanceName_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(5, streamId_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(6, stage_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBoolSize(7, expired_);
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(8, tunnelName_);
        }
        if (((bitField0_ & 0x00000100) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBoolSize(9, public_);
        }
        if (((bitField0_ & 0x00000200) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(10, getStreamTunnelConfig());
        }
        if (((bitField0_ & 0x00000400) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(11, createTime_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo) obj;
  
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (hasTunnelType() != other.hasTunnelType()) return false;
        if (hasTunnelType()) {
          if (!getTunnelType()
              .equals(other.getTunnelType())) return false;
        }
        if (hasTableName() != other.hasTableName()) return false;
        if (hasTableName()) {
          if (!getTableName()
              .equals(other.getTableName())) return false;
        }
        if (hasInstanceName() != other.hasInstanceName()) return false;
        if (hasInstanceName()) {
          if (!getInstanceName()
              .equals(other.getInstanceName())) return false;
        }
        if (hasStreamId() != other.hasStreamId()) return false;
        if (hasStreamId()) {
          if (!getStreamId()
              .equals(other.getStreamId())) return false;
        }
        if (hasStage() != other.hasStage()) return false;
        if (hasStage()) {
          if (!getStage()
              .equals(other.getStage())) return false;
        }
        if (hasExpired() != other.hasExpired()) return false;
        if (hasExpired()) {
          if (getExpired()
              != other.getExpired()) return false;
        }
        if (hasTunnelName() != other.hasTunnelName()) return false;
        if (hasTunnelName()) {
          if (!getTunnelName()
              .equals(other.getTunnelName())) return false;
        }
        if (hasPublic() != other.hasPublic()) return false;
        if (hasPublic()) {
          if (getPublic()
              != other.getPublic()) return false;
        }
        if (hasStreamTunnelConfig() != other.hasStreamTunnelConfig()) return false;
        if (hasStreamTunnelConfig()) {
          if (!getStreamTunnelConfig()
              .equals(other.getStreamTunnelConfig())) return false;
        }
        if (hasCreateTime() != other.hasCreateTime()) return false;
        if (hasCreateTime()) {
          if (getCreateTime()
              != other.getCreateTime()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        if (hasTunnelType()) {
          hash = (37 * hash) + TUNNEL_TYPE_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelType().hashCode();
        }
        if (hasTableName()) {
          hash = (37 * hash) + TABLE_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (hasInstanceName()) {
          hash = (37 * hash) + INSTANCE_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getInstanceName().hashCode();
        }
        if (hasStreamId()) {
          hash = (37 * hash) + STREAM_ID_FIELD_NUMBER;
          hash = (53 * hash) + getStreamId().hashCode();
        }
        if (hasStage()) {
          hash = (37 * hash) + STAGE_FIELD_NUMBER;
          hash = (53 * hash) + getStage().hashCode();
        }
        if (hasExpired()) {
          hash = (37 * hash) + EXPIRED_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashBoolean(
              getExpired());
        }
        if (hasTunnelName()) {
          hash = (37 * hash) + TUNNEL_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelName().hashCode();
        }
        if (hasPublic()) {
          hash = (37 * hash) + PUBLIC_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashBoolean(
              getPublic());
        }
        if (hasStreamTunnelConfig()) {
          hash = (37 * hash) + STREAM_TUNNEL_CONFIG_FIELD_NUMBER;
          hash = (53 * hash) + getStreamTunnelConfig().hashCode();
        }
        if (hasCreateTime()) {
          hash = (37 * hash) + CREATE_TIME_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getCreateTime());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.TunnelInfo}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.TunnelInfo)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
                  .alwaysUseFieldBuilders) {
            getStreamTunnelConfigFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnelId_ = "";
          tunnelType_ = "";
          tableName_ = "";
          instanceName_ = "";
          streamId_ = "";
          stage_ = "";
          expired_ = false;
          tunnelName_ = "";
          public_ = false;
          streamTunnelConfig_ = null;
          if (streamTunnelConfigBuilder_ != null) {
            streamTunnelConfigBuilder_.dispose();
            streamTunnelConfigBuilder_ = null;
          }
          createTime_ = 0L;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.tunnelType_ = tunnelType_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.tableName_ = tableName_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.instanceName_ = instanceName_;
            to_bitField0_ |= 0x00000008;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.streamId_ = streamId_;
            to_bitField0_ |= 0x00000010;
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.stage_ = stage_;
            to_bitField0_ |= 0x00000020;
          }
          if (((from_bitField0_ & 0x00000040) != 0)) {
            result.expired_ = expired_;
            to_bitField0_ |= 0x00000040;
          }
          if (((from_bitField0_ & 0x00000080) != 0)) {
            result.tunnelName_ = tunnelName_;
            to_bitField0_ |= 0x00000080;
          }
          if (((from_bitField0_ & 0x00000100) != 0)) {
            result.public_ = public_;
            to_bitField0_ |= 0x00000100;
          }
          if (((from_bitField0_ & 0x00000200) != 0)) {
            result.streamTunnelConfig_ = streamTunnelConfigBuilder_ == null
                ? streamTunnelConfig_
                : streamTunnelConfigBuilder_.build();
            to_bitField0_ |= 0x00000200;
          }
          if (((from_bitField0_ & 0x00000400) != 0)) {
            result.createTime_ = createTime_;
            to_bitField0_ |= 0x00000400;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.getDefaultInstance()) return this;
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasTunnelType()) {
            tunnelType_ = other.tunnelType_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasTableName()) {
            tableName_ = other.tableName_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          if (other.hasInstanceName()) {
            instanceName_ = other.instanceName_;
            bitField0_ |= 0x00000008;
            onChanged();
          }
          if (other.hasStreamId()) {
            streamId_ = other.streamId_;
            bitField0_ |= 0x00000010;
            onChanged();
          }
          if (other.hasStage()) {
            stage_ = other.stage_;
            bitField0_ |= 0x00000020;
            onChanged();
          }
          if (other.hasExpired()) {
            setExpired(other.getExpired());
          }
          if (other.hasTunnelName()) {
            tunnelName_ = other.tunnelName_;
            bitField0_ |= 0x00000080;
            onChanged();
          }
          if (other.hasPublic()) {
            setPublic(other.getPublic());
          }
          if (other.hasStreamTunnelConfig()) {
            mergeStreamTunnelConfig(other.getStreamTunnelConfig());
          }
          if (other.hasCreateTime()) {
            setCreateTime(other.getCreateTime());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnelId()) {
            return false;
          }
          if (!hasTunnelType()) {
            return false;
          }
          if (!hasTableName()) {
            return false;
          }
          if (!hasInstanceName()) {
            return false;
          }
          if (!hasStreamId()) {
            return false;
          }
          if (!hasStage()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  tunnelType_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  tableName_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                case 34: {
                  instanceName_ = input.readBytes();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
                case 42: {
                  streamId_ = input.readBytes();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 42
                case 50: {
                  stage_ = input.readBytes();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 50
                case 56: {
                  expired_ = input.readBool();
                  bitField0_ |= 0x00000040;
                  break;
                } // case 56
                case 66: {
                  tunnelName_ = input.readBytes();
                  bitField0_ |= 0x00000080;
                  break;
                } // case 66
                case 72: {
                  public_ = input.readBool();
                  bitField0_ |= 0x00000100;
                  break;
                } // case 72
                case 82: {
                  input.readMessage(
                      getStreamTunnelConfigFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000200;
                  break;
                } // case 82
                case 88: {
                  createTime_ = input.readInt64();
                  bitField0_ |= 0x00000400;
                  break;
                } // case 88
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object tunnelType_ = "";
        /**
         * <code>required string tunnel_type = 2;</code>
         * @return Whether the tunnelType field is set.
         */
        public boolean hasTunnelType() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string tunnel_type = 2;</code>
         * @return The tunnelType.
         */
        public java.lang.String getTunnelType() {
          java.lang.Object ref = tunnelType_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelType_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_type = 2;</code>
         * @return The bytes for tunnelType.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelTypeBytes() {
          java.lang.Object ref = tunnelType_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelType_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_type = 2;</code>
         * @param value The tunnelType to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelType(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelType_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_type = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelType() {
          tunnelType_ = getDefaultInstance().getTunnelType();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_type = 2;</code>
         * @param value The bytes for tunnelType to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelTypeBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelType_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private java.lang.Object tableName_ = "";
        /**
         * <code>required string table_name = 3;</code>
         * @return Whether the tableName field is set.
         */
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>required string table_name = 3;</code>
         * @return The tableName.
         */
        public java.lang.String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tableName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string table_name = 3;</code>
         * @return The bytes for tableName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTableNameBytes() {
          java.lang.Object ref = tableName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tableName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string table_name = 3;</code>
         * @param value The tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>required string table_name = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTableName() {
          tableName_ = getDefaultInstance().getTableName();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <code>required string table_name = 3;</code>
         * @param value The bytes for tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
  
        private java.lang.Object instanceName_ = "";
        /**
         * <code>required string instance_name = 4;</code>
         * @return Whether the instanceName field is set.
         */
        public boolean hasInstanceName() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>required string instance_name = 4;</code>
         * @return The instanceName.
         */
        public java.lang.String getInstanceName() {
          java.lang.Object ref = instanceName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              instanceName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string instance_name = 4;</code>
         * @return The bytes for instanceName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getInstanceNameBytes() {
          java.lang.Object ref = instanceName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            instanceName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string instance_name = 4;</code>
         * @param value The instanceName to set.
         * @return This builder for chaining.
         */
        public Builder setInstanceName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          instanceName_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <code>required string instance_name = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearInstanceName() {
          instanceName_ = getDefaultInstance().getInstanceName();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }
        /**
         * <code>required string instance_name = 4;</code>
         * @param value The bytes for instanceName to set.
         * @return This builder for chaining.
         */
        public Builder setInstanceNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          instanceName_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
  
        private java.lang.Object streamId_ = "";
        /**
         * <code>required string stream_id = 5;</code>
         * @return Whether the streamId field is set.
         */
        public boolean hasStreamId() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <code>required string stream_id = 5;</code>
         * @return The streamId.
         */
        public java.lang.String getStreamId() {
          java.lang.Object ref = streamId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              streamId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string stream_id = 5;</code>
         * @return The bytes for streamId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getStreamIdBytes() {
          java.lang.Object ref = streamId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            streamId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string stream_id = 5;</code>
         * @param value The streamId to set.
         * @return This builder for chaining.
         */
        public Builder setStreamId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          streamId_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
        /**
         * <code>required string stream_id = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearStreamId() {
          streamId_ = getDefaultInstance().getStreamId();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
          return this;
        }
        /**
         * <code>required string stream_id = 5;</code>
         * @param value The bytes for streamId to set.
         * @return This builder for chaining.
         */
        public Builder setStreamIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          streamId_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
  
        private java.lang.Object stage_ = "";
        /**
         * <code>required string stage = 6;</code>
         * @return Whether the stage field is set.
         */
        public boolean hasStage() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <code>required string stage = 6;</code>
         * @return The stage.
         */
        public java.lang.String getStage() {
          java.lang.Object ref = stage_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              stage_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string stage = 6;</code>
         * @return The bytes for stage.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getStageBytes() {
          java.lang.Object ref = stage_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            stage_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string stage = 6;</code>
         * @param value The stage to set.
         * @return This builder for chaining.
         */
        public Builder setStage(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          stage_ = value;
          bitField0_ |= 0x00000020;
          onChanged();
          return this;
        }
        /**
         * <code>required string stage = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearStage() {
          stage_ = getDefaultInstance().getStage();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
          return this;
        }
        /**
         * <code>required string stage = 6;</code>
         * @param value The bytes for stage to set.
         * @return This builder for chaining.
         */
        public Builder setStageBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          stage_ = value;
          bitField0_ |= 0x00000020;
          onChanged();
          return this;
        }
  
        private boolean expired_ ;
        /**
         * <code>optional bool expired = 7;</code>
         * @return Whether the expired field is set.
         */
        @java.lang.Override
        public boolean hasExpired() {
          return ((bitField0_ & 0x00000040) != 0);
        }
        /**
         * <code>optional bool expired = 7;</code>
         * @return The expired.
         */
        @java.lang.Override
        public boolean getExpired() {
          return expired_;
        }
        /**
         * <code>optional bool expired = 7;</code>
         * @param value The expired to set.
         * @return This builder for chaining.
         */
        public Builder setExpired(boolean value) {
  
          expired_ = value;
          bitField0_ |= 0x00000040;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool expired = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearExpired() {
          bitField0_ = (bitField0_ & ~0x00000040);
          expired_ = false;
          onChanged();
          return this;
        }
  
        private java.lang.Object tunnelName_ = "";
        /**
         * <code>optional string tunnel_name = 8;</code>
         * @return Whether the tunnelName field is set.
         */
        public boolean hasTunnelName() {
          return ((bitField0_ & 0x00000080) != 0);
        }
        /**
         * <code>optional string tunnel_name = 8;</code>
         * @return The tunnelName.
         */
        public java.lang.String getTunnelName() {
          java.lang.Object ref = tunnelName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string tunnel_name = 8;</code>
         * @return The bytes for tunnelName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelNameBytes() {
          java.lang.Object ref = tunnelName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string tunnel_name = 8;</code>
         * @param value The tunnelName to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelName_ = value;
          bitField0_ |= 0x00000080;
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_name = 8;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelName() {
          tunnelName_ = getDefaultInstance().getTunnelName();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_name = 8;</code>
         * @param value The bytes for tunnelName to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelName_ = value;
          bitField0_ |= 0x00000080;
          onChanged();
          return this;
        }
  
        private boolean public_ ;
        /**
         * <code>optional bool public = 9;</code>
         * @return Whether the public field is set.
         */
        @java.lang.Override
        public boolean hasPublic() {
          return ((bitField0_ & 0x00000100) != 0);
        }
        /**
         * <code>optional bool public = 9;</code>
         * @return The public.
         */
        @java.lang.Override
        public boolean getPublic() {
          return public_;
        }
        /**
         * <code>optional bool public = 9;</code>
         * @param value The public to set.
         * @return This builder for chaining.
         */
        public Builder setPublic(boolean value) {
  
          public_ = value;
          bitField0_ |= 0x00000100;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool public = 9;</code>
         * @return This builder for chaining.
         */
        public Builder clearPublic() {
          bitField0_ = (bitField0_ & ~0x00000100);
          public_ = false;
          onChanged();
          return this;
        }
  
        private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig streamTunnelConfig_;
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder> streamTunnelConfigBuilder_;
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
         * @return Whether the streamTunnelConfig field is set.
         */
        public boolean hasStreamTunnelConfig() {
          return ((bitField0_ & 0x00000200) != 0);
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
         * @return The streamTunnelConfig.
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig getStreamTunnelConfig() {
          if (streamTunnelConfigBuilder_ == null) {
            return streamTunnelConfig_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance() : streamTunnelConfig_;
          } else {
            return streamTunnelConfigBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
         */
        public Builder setStreamTunnelConfig(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig value) {
          if (streamTunnelConfigBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            streamTunnelConfig_ = value;
          } else {
            streamTunnelConfigBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000200;
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
         */
        public Builder setStreamTunnelConfig(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder builderForValue) {
          if (streamTunnelConfigBuilder_ == null) {
            streamTunnelConfig_ = builderForValue.build();
          } else {
            streamTunnelConfigBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000200;
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
         */
        public Builder mergeStreamTunnelConfig(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig value) {
          if (streamTunnelConfigBuilder_ == null) {
            if (((bitField0_ & 0x00000200) != 0) &&
              streamTunnelConfig_ != null &&
              streamTunnelConfig_ != com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance()) {
              getStreamTunnelConfigBuilder().mergeFrom(value);
            } else {
              streamTunnelConfig_ = value;
            }
          } else {
            streamTunnelConfigBuilder_.mergeFrom(value);
          }
          if (streamTunnelConfig_ != null) {
            bitField0_ |= 0x00000200;
            onChanged();
          }
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
         */
        public Builder clearStreamTunnelConfig() {
          bitField0_ = (bitField0_ & ~0x00000200);
          streamTunnelConfig_ = null;
          if (streamTunnelConfigBuilder_ != null) {
            streamTunnelConfigBuilder_.dispose();
            streamTunnelConfigBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder getStreamTunnelConfigBuilder() {
          bitField0_ |= 0x00000200;
          onChanged();
          return getStreamTunnelConfigFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder getStreamTunnelConfigOrBuilder() {
          if (streamTunnelConfigBuilder_ != null) {
            return streamTunnelConfigBuilder_.getMessageOrBuilder();
          } else {
            return streamTunnelConfig_ == null ?
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance() : streamTunnelConfig_;
          }
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig stream_tunnel_config = 10;</code>
         */
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder> 
            getStreamTunnelConfigFieldBuilder() {
          if (streamTunnelConfigBuilder_ == null) {
            streamTunnelConfigBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder>(
                    getStreamTunnelConfig(),
                    getParentForChildren(),
                    isClean());
            streamTunnelConfig_ = null;
          }
          return streamTunnelConfigBuilder_;
        }
  
        private long createTime_ ;
        /**
         * <code>optional int64 create_time = 11;</code>
         * @return Whether the createTime field is set.
         */
        @java.lang.Override
        public boolean hasCreateTime() {
          return ((bitField0_ & 0x00000400) != 0);
        }
        /**
         * <code>optional int64 create_time = 11;</code>
         * @return The createTime.
         */
        @java.lang.Override
        public long getCreateTime() {
          return createTime_;
        }
        /**
         * <code>optional int64 create_time = 11;</code>
         * @param value The createTime to set.
         * @return This builder for chaining.
         */
        public Builder setCreateTime(long value) {
  
          createTime_ = value;
          bitField0_ |= 0x00000400;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 create_time = 11;</code>
         * @return This builder for chaining.
         */
        public Builder clearCreateTime() {
          bitField0_ = (bitField0_ & ~0x00000400);
          createTime_ = 0L;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.TunnelInfo)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.TunnelInfo)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<TunnelInfo>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<TunnelInfo>() {
        @java.lang.Override
        public TunnelInfo parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<TunnelInfo> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<TunnelInfo> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ListTunnelResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ListTunnelResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo> 
          getTunnelsList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo getTunnels(int index);
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      int getTunnelsCount();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder> 
          getTunnelsOrBuilderList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder getTunnelsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ListTunnelResponse}
     */
    public static final class ListTunnelResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ListTunnelResponse)
        ListTunnelResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ListTunnelResponse.class.getName());
      }
      // Use ListTunnelResponse.newBuilder() to construct.
      private ListTunnelResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ListTunnelResponse() {
        tunnels_ = java.util.Collections.emptyList();
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse.Builder.class);
      }
  
      public static final int TUNNELS_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo> tunnels_;
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      @java.lang.Override
      public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo> getTunnelsList() {
        return tunnels_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder> 
          getTunnelsOrBuilderList() {
        return tunnels_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      @java.lang.Override
      public int getTunnelsCount() {
        return tunnels_.size();
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo getTunnels(int index) {
        return tunnels_.get(index);
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder getTunnelsOrBuilder(
          int index) {
        return tunnels_.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;
  
        for (int i = 0; i < getTunnelsCount(); i++) {
          if (!getTunnels(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < tunnels_.size(); i++) {
          output.writeMessage(1, tunnels_.get(i));
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        for (int i = 0; i < tunnels_.size(); i++) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, tunnels_.get(i));
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse) obj;
  
        if (!getTunnelsList()
            .equals(other.getTunnelsList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getTunnelsCount() > 0) {
          hash = (37 * hash) + TUNNELS_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelsList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ListTunnelResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ListTunnelResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (tunnelsBuilder_ == null) {
            tunnels_ = java.util.Collections.emptyList();
          } else {
            tunnels_ = null;
            tunnelsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartialRepeatedFields(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse result) {
          if (tunnelsBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              tunnels_ = java.util.Collections.unmodifiableList(tunnels_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.tunnels_ = tunnels_;
          } else {
            result.tunnels_ = tunnelsBuilder_.build();
          }
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse result) {
          int from_bitField0_ = bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse.getDefaultInstance()) return this;
          if (tunnelsBuilder_ == null) {
            if (!other.tunnels_.isEmpty()) {
              if (tunnels_.isEmpty()) {
                tunnels_ = other.tunnels_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureTunnelsIsMutable();
                tunnels_.addAll(other.tunnels_);
              }
              onChanged();
            }
          } else {
            if (!other.tunnels_.isEmpty()) {
              if (tunnelsBuilder_.isEmpty()) {
                tunnelsBuilder_.dispose();
                tunnelsBuilder_ = null;
                tunnels_ = other.tunnels_;
                bitField0_ = (bitField0_ & ~0x00000001);
                tunnelsBuilder_ = 
                  com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getTunnelsFieldBuilder() : null;
              } else {
                tunnelsBuilder_.addAllMessages(other.tunnels_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          for (int i = 0; i < getTunnelsCount(); i++) {
            if (!getTunnels(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo m =
                      input.readMessage(
                          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.parser(),
                          extensionRegistry);
                  if (tunnelsBuilder_ == null) {
                    ensureTunnelsIsMutable();
                    tunnels_.add(m);
                  } else {
                    tunnelsBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo> tunnels_ =
          java.util.Collections.emptyList();
        private void ensureTunnelsIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            tunnels_ = new java.util.ArrayList<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo>(tunnels_);
            bitField0_ |= 0x00000001;
           }
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder> tunnelsBuilder_;
  
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo> getTunnelsList() {
          if (tunnelsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(tunnels_);
          } else {
            return tunnelsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public int getTunnelsCount() {
          if (tunnelsBuilder_ == null) {
            return tunnels_.size();
          } else {
            return tunnelsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo getTunnels(int index) {
          if (tunnelsBuilder_ == null) {
            return tunnels_.get(index);
          } else {
            return tunnelsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public Builder setTunnels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo value) {
          if (tunnelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTunnelsIsMutable();
            tunnels_.set(index, value);
            onChanged();
          } else {
            tunnelsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public Builder setTunnels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder builderForValue) {
          if (tunnelsBuilder_ == null) {
            ensureTunnelsIsMutable();
            tunnels_.set(index, builderForValue.build());
            onChanged();
          } else {
            tunnelsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public Builder addTunnels(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo value) {
          if (tunnelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTunnelsIsMutable();
            tunnels_.add(value);
            onChanged();
          } else {
            tunnelsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public Builder addTunnels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo value) {
          if (tunnelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTunnelsIsMutable();
            tunnels_.add(index, value);
            onChanged();
          } else {
            tunnelsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public Builder addTunnels(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder builderForValue) {
          if (tunnelsBuilder_ == null) {
            ensureTunnelsIsMutable();
            tunnels_.add(builderForValue.build());
            onChanged();
          } else {
            tunnelsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public Builder addTunnels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder builderForValue) {
          if (tunnelsBuilder_ == null) {
            ensureTunnelsIsMutable();
            tunnels_.add(index, builderForValue.build());
            onChanged();
          } else {
            tunnelsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public Builder addAllTunnels(
            java.lang.Iterable<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo> values) {
          if (tunnelsBuilder_ == null) {
            ensureTunnelsIsMutable();
            com.aliyun.ots.thirdparty.com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, tunnels_);
            onChanged();
          } else {
            tunnelsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public Builder clearTunnels() {
          if (tunnelsBuilder_ == null) {
            tunnels_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            tunnelsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public Builder removeTunnels(int index) {
          if (tunnelsBuilder_ == null) {
            ensureTunnelsIsMutable();
            tunnels_.remove(index);
            onChanged();
          } else {
            tunnelsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder getTunnelsBuilder(
            int index) {
          return getTunnelsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder getTunnelsOrBuilder(
            int index) {
          if (tunnelsBuilder_ == null) {
            return tunnels_.get(index);  } else {
            return tunnelsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder> 
             getTunnelsOrBuilderList() {
          if (tunnelsBuilder_ != null) {
            return tunnelsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(tunnels_);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder addTunnelsBuilder() {
          return getTunnelsFieldBuilder().addBuilder(
              com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder addTunnelsBuilder(
            int index) {
          return getTunnelsFieldBuilder().addBuilder(
              index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnels = 1;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder> 
             getTunnelsBuilderList() {
          return getTunnelsFieldBuilder().getBuilderList();
        }
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder> 
            getTunnelsFieldBuilder() {
          if (tunnelsBuilder_ == null) {
            tunnelsBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder>(
                    tunnels_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            tunnels_ = null;
          }
          return tunnelsBuilder_;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ListTunnelResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ListTunnelResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ListTunnelResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ListTunnelResponse>() {
        @java.lang.Override
        public ListTunnelResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ListTunnelResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ListTunnelResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ListTunnelResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface DescribeTunnelRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string table_name = 1;</code>
       * @return Whether the tableName field is set.
       */
      boolean hasTableName();
      /**
       * <code>required string table_name = 1;</code>
       * @return The tableName.
       */
      java.lang.String getTableName();
      /**
       * <code>required string table_name = 1;</code>
       * @return The bytes for tableName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes();
  
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return Whether the tunnelName field is set.
       */
      boolean hasTunnelName();
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return The tunnelName.
       */
      java.lang.String getTunnelName();
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return The bytes for tunnelName.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelNameBytes();
  
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelRequest}
     */
    public static final class DescribeTunnelRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelRequest)
        DescribeTunnelRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          DescribeTunnelRequest.class.getName());
      }
      // Use DescribeTunnelRequest.newBuilder() to construct.
      private DescribeTunnelRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private DescribeTunnelRequest() {
        tableName_ = "";
        tunnelName_ = "";
        tunnelId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TABLE_NAME_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tableName_ = "";
      /**
       * <code>required string table_name = 1;</code>
       * @return Whether the tableName field is set.
       */
      @java.lang.Override
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string table_name = 1;</code>
       * @return The tableName.
       */
      @java.lang.Override
      public java.lang.String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tableName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string table_name = 1;</code>
       * @return The bytes for tableName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TUNNEL_NAME_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelName_ = "";
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return Whether the tunnelName field is set.
       */
      @java.lang.Override
      public boolean hasTunnelName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return The tunnelName.
       */
      @java.lang.Override
      public java.lang.String getTunnelName() {
        java.lang.Object ref = tunnelName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelName_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_name = 2;</code>
       * @return The bytes for tunnelName.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelNameBytes() {
        java.lang.Object ref = tunnelName_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelName_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TUNNEL_ID_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string tunnel_id = 3;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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;
  
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTunnelName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tableName_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, tunnelName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 3, tunnelId_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tableName_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, tunnelName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(3, tunnelId_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest) obj;
  
        if (hasTableName() != other.hasTableName()) return false;
        if (hasTableName()) {
          if (!getTableName()
              .equals(other.getTableName())) return false;
        }
        if (hasTunnelName() != other.hasTunnelName()) return false;
        if (hasTunnelName()) {
          if (!getTunnelName()
              .equals(other.getTunnelName())) return false;
        }
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTableName()) {
          hash = (37 * hash) + TABLE_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (hasTunnelName()) {
          hash = (37 * hash) + TUNNEL_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelName().hashCode();
        }
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tableName_ = "";
          tunnelName_ = "";
          tunnelId_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tableName_ = tableName_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.tunnelName_ = tunnelName_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest.getDefaultInstance()) return this;
          if (other.hasTableName()) {
            tableName_ = other.tableName_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasTunnelName()) {
            tunnelName_ = other.tunnelName_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTableName()) {
            return false;
          }
          if (!hasTunnelName()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tableName_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  tunnelName_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tableName_ = "";
        /**
         * <code>required string table_name = 1;</code>
         * @return Whether the tableName field is set.
         */
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string table_name = 1;</code>
         * @return The tableName.
         */
        public java.lang.String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tableName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string table_name = 1;</code>
         * @return The bytes for tableName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTableNameBytes() {
          java.lang.Object ref = tableName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tableName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string table_name = 1;</code>
         * @param value The tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string table_name = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTableName() {
          tableName_ = getDefaultInstance().getTableName();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string table_name = 1;</code>
         * @param value The bytes for tableName to set.
         * @return This builder for chaining.
         */
        public Builder setTableNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tableName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object tunnelName_ = "";
        /**
         * <code>required string tunnel_name = 2;</code>
         * @return Whether the tunnelName field is set.
         */
        public boolean hasTunnelName() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @return The tunnelName.
         */
        public java.lang.String getTunnelName() {
          java.lang.Object ref = tunnelName_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @return The bytes for tunnelName.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelNameBytes() {
          java.lang.Object ref = tunnelName_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelName_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @param value The tunnelName to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelName_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelName() {
          tunnelName_ = getDefaultInstance().getTunnelName();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_name = 2;</code>
         * @param value The bytes for tunnelName to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelNameBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelName_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_id = 3;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DescribeTunnelRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<DescribeTunnelRequest>() {
        @java.lang.Override
        public DescribeTunnelRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DescribeTunnelRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DescribeTunnelRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ChannelInfoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ChannelInfo)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string channel_id = 1;</code>
       * @return Whether the channelId field is set.
       */
      boolean hasChannelId();
      /**
       * <code>required string channel_id = 1;</code>
       * @return The channelId.
       */
      java.lang.String getChannelId();
      /**
       * <code>required string channel_id = 1;</code>
       * @return The bytes for channelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes();
  
      /**
       * <code>optional string channel_type = 2;</code>
       * @return Whether the channelType field is set.
       */
      boolean hasChannelType();
      /**
       * <code>optional string channel_type = 2;</code>
       * @return The channelType.
       */
      java.lang.String getChannelType();
      /**
       * <code>optional string channel_type = 2;</code>
       * @return The bytes for channelType.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelTypeBytes();
  
      /**
       * <code>optional string channel_status = 3;</code>
       * @return Whether the channelStatus field is set.
       */
      boolean hasChannelStatus();
      /**
       * <code>optional string channel_status = 3;</code>
       * @return The channelStatus.
       */
      java.lang.String getChannelStatus();
      /**
       * <code>optional string channel_status = 3;</code>
       * @return The bytes for channelStatus.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelStatusBytes();
  
      /**
       * <code>optional string client_id = 4;</code>
       * @return Whether the clientId field is set.
       */
      boolean hasClientId();
      /**
       * <code>optional string client_id = 4;</code>
       * @return The clientId.
       */
      java.lang.String getClientId();
      /**
       * <code>optional string client_id = 4;</code>
       * @return The bytes for clientId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes();
  
      /**
       * <code>optional int64 channel_rpo = 5;</code>
       * @return Whether the channelRpo field is set.
       */
      boolean hasChannelRpo();
      /**
       * <code>optional int64 channel_rpo = 5;</code>
       * @return The channelRpo.
       */
      long getChannelRpo();
  
      /**
       * <code>optional int64 channel_count = 6;</code>
       * @return Whether the channelCount field is set.
       */
      boolean hasChannelCount();
      /**
       * <code>optional int64 channel_count = 6;</code>
       * @return The channelCount.
       */
      long getChannelCount();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ChannelInfo}
     */
    public static final class ChannelInfo extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ChannelInfo)
        ChannelInfoOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ChannelInfo.class.getName());
      }
      // Use ChannelInfo.newBuilder() to construct.
      private ChannelInfo(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ChannelInfo() {
        channelId_ = "";
        channelType_ = "";
        channelStatus_ = "";
        clientId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder.class);
      }
  
      private int bitField0_;
      public static final int CHANNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 1;</code>
       * @return Whether the channelId field is set.
       */
      @java.lang.Override
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string channel_id = 1;</code>
       * @return The channelId.
       */
      @java.lang.Override
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            channelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       * @return The bytes for channelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CHANNEL_TYPE_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object channelType_ = "";
      /**
       * <code>optional string channel_type = 2;</code>
       * @return Whether the channelType field is set.
       */
      @java.lang.Override
      public boolean hasChannelType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string channel_type = 2;</code>
       * @return The channelType.
       */
      @java.lang.Override
      public java.lang.String getChannelType() {
        java.lang.Object ref = channelType_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            channelType_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string channel_type = 2;</code>
       * @return The bytes for channelType.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelTypeBytes() {
        java.lang.Object ref = channelType_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelType_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CHANNEL_STATUS_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object channelStatus_ = "";
      /**
       * <code>optional string channel_status = 3;</code>
       * @return Whether the channelStatus field is set.
       */
      @java.lang.Override
      public boolean hasChannelStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string channel_status = 3;</code>
       * @return The channelStatus.
       */
      @java.lang.Override
      public java.lang.String getChannelStatus() {
        java.lang.Object ref = channelStatus_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            channelStatus_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string channel_status = 3;</code>
       * @return The bytes for channelStatus.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelStatusBytes() {
        java.lang.Object ref = channelStatus_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelStatus_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CLIENT_ID_FIELD_NUMBER = 4;
      @SuppressWarnings("serial")
      private volatile java.lang.Object clientId_ = "";
      /**
       * <code>optional string client_id = 4;</code>
       * @return Whether the clientId field is set.
       */
      @java.lang.Override
      public boolean hasClientId() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string client_id = 4;</code>
       * @return The clientId.
       */
      @java.lang.Override
      public java.lang.String getClientId() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            clientId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string client_id = 4;</code>
       * @return The bytes for clientId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CHANNEL_RPO_FIELD_NUMBER = 5;
      private long channelRpo_ = 0L;
      /**
       * <code>optional int64 channel_rpo = 5;</code>
       * @return Whether the channelRpo field is set.
       */
      @java.lang.Override
      public boolean hasChannelRpo() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional int64 channel_rpo = 5;</code>
       * @return The channelRpo.
       */
      @java.lang.Override
      public long getChannelRpo() {
        return channelRpo_;
      }
  
      public static final int CHANNEL_COUNT_FIELD_NUMBER = 6;
      private long channelCount_ = 0L;
      /**
       * <code>optional int64 channel_count = 6;</code>
       * @return Whether the channelCount field is set.
       */
      @java.lang.Override
      public boolean hasChannelCount() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional int64 channel_count = 6;</code>
       * @return The channelCount.
       */
      @java.lang.Override
      public long getChannelCount() {
        return channelCount_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasChannelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, channelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, channelType_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 3, channelStatus_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 4, clientId_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeInt64(5, channelRpo_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          output.writeInt64(6, channelCount_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, channelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, channelType_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(3, channelStatus_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(4, clientId_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(5, channelRpo_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(6, channelCount_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo) obj;
  
        if (hasChannelId() != other.hasChannelId()) return false;
        if (hasChannelId()) {
          if (!getChannelId()
              .equals(other.getChannelId())) return false;
        }
        if (hasChannelType() != other.hasChannelType()) return false;
        if (hasChannelType()) {
          if (!getChannelType()
              .equals(other.getChannelType())) return false;
        }
        if (hasChannelStatus() != other.hasChannelStatus()) return false;
        if (hasChannelStatus()) {
          if (!getChannelStatus()
              .equals(other.getChannelStatus())) return false;
        }
        if (hasClientId() != other.hasClientId()) return false;
        if (hasClientId()) {
          if (!getClientId()
              .equals(other.getClientId())) return false;
        }
        if (hasChannelRpo() != other.hasChannelRpo()) return false;
        if (hasChannelRpo()) {
          if (getChannelRpo()
              != other.getChannelRpo()) return false;
        }
        if (hasChannelCount() != other.hasChannelCount()) return false;
        if (hasChannelCount()) {
          if (getChannelCount()
              != other.getChannelCount()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId().hashCode();
        }
        if (hasChannelType()) {
          hash = (37 * hash) + CHANNEL_TYPE_FIELD_NUMBER;
          hash = (53 * hash) + getChannelType().hashCode();
        }
        if (hasChannelStatus()) {
          hash = (37 * hash) + CHANNEL_STATUS_FIELD_NUMBER;
          hash = (53 * hash) + getChannelStatus().hashCode();
        }
        if (hasClientId()) {
          hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getClientId().hashCode();
        }
        if (hasChannelRpo()) {
          hash = (37 * hash) + CHANNEL_RPO_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getChannelRpo());
        }
        if (hasChannelCount()) {
          hash = (37 * hash) + CHANNEL_COUNT_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getChannelCount());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ChannelInfo}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ChannelInfo)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          channelId_ = "";
          channelType_ = "";
          channelStatus_ = "";
          clientId_ = "";
          channelRpo_ = 0L;
          channelCount_ = 0L;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.channelId_ = channelId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.channelType_ = channelType_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.channelStatus_ = channelStatus_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.clientId_ = clientId_;
            to_bitField0_ |= 0x00000008;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.channelRpo_ = channelRpo_;
            to_bitField0_ |= 0x00000010;
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.channelCount_ = channelCount_;
            to_bitField0_ |= 0x00000020;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.getDefaultInstance()) return this;
          if (other.hasChannelId()) {
            channelId_ = other.channelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasChannelType()) {
            channelType_ = other.channelType_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasChannelStatus()) {
            channelStatus_ = other.channelStatus_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          if (other.hasClientId()) {
            clientId_ = other.clientId_;
            bitField0_ |= 0x00000008;
            onChanged();
          }
          if (other.hasChannelRpo()) {
            setChannelRpo(other.getChannelRpo());
          }
          if (other.hasChannelCount()) {
            setChannelCount(other.getChannelCount());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasChannelId()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  channelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  channelType_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  channelStatus_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                case 34: {
                  clientId_ = input.readBytes();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
                case 40: {
                  channelRpo_ = input.readInt64();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 40
                case 48: {
                  channelCount_ = input.readInt64();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 48
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object channelId_ = "";
        /**
         * <code>required string channel_id = 1;</code>
         * @return Whether the channelId field is set.
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @return The channelId.
         */
        public java.lang.String getChannelId() {
          java.lang.Object ref = channelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              channelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @return The bytes for channelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getChannelIdBytes() {
          java.lang.Object ref = channelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            channelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @param value The channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearChannelId() {
          channelId_ = getDefaultInstance().getChannelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @param value The bytes for channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object channelType_ = "";
        /**
         * <code>optional string channel_type = 2;</code>
         * @return Whether the channelType field is set.
         */
        public boolean hasChannelType() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string channel_type = 2;</code>
         * @return The channelType.
         */
        public java.lang.String getChannelType() {
          java.lang.Object ref = channelType_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              channelType_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string channel_type = 2;</code>
         * @return The bytes for channelType.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getChannelTypeBytes() {
          java.lang.Object ref = channelType_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            channelType_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string channel_type = 2;</code>
         * @param value The channelType to set.
         * @return This builder for chaining.
         */
        public Builder setChannelType(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          channelType_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>optional string channel_type = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearChannelType() {
          channelType_ = getDefaultInstance().getChannelType();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>optional string channel_type = 2;</code>
         * @param value The bytes for channelType to set.
         * @return This builder for chaining.
         */
        public Builder setChannelTypeBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          channelType_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private java.lang.Object channelStatus_ = "";
        /**
         * <code>optional string channel_status = 3;</code>
         * @return Whether the channelStatus field is set.
         */
        public boolean hasChannelStatus() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional string channel_status = 3;</code>
         * @return The channelStatus.
         */
        public java.lang.String getChannelStatus() {
          java.lang.Object ref = channelStatus_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              channelStatus_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string channel_status = 3;</code>
         * @return The bytes for channelStatus.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getChannelStatusBytes() {
          java.lang.Object ref = channelStatus_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            channelStatus_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string channel_status = 3;</code>
         * @param value The channelStatus to set.
         * @return This builder for chaining.
         */
        public Builder setChannelStatus(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          channelStatus_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional string channel_status = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearChannelStatus() {
          channelStatus_ = getDefaultInstance().getChannelStatus();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <code>optional string channel_status = 3;</code>
         * @param value The bytes for channelStatus to set.
         * @return This builder for chaining.
         */
        public Builder setChannelStatusBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          channelStatus_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
  
        private java.lang.Object clientId_ = "";
        /**
         * <code>optional string client_id = 4;</code>
         * @return Whether the clientId field is set.
         */
        public boolean hasClientId() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>optional string client_id = 4;</code>
         * @return The clientId.
         */
        public java.lang.String getClientId() {
          java.lang.Object ref = clientId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              clientId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string client_id = 4;</code>
         * @return The bytes for clientId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getClientIdBytes() {
          java.lang.Object ref = clientId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            clientId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string client_id = 4;</code>
         * @param value The clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <code>optional string client_id = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearClientId() {
          clientId_ = getDefaultInstance().getClientId();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }
        /**
         * <code>optional string client_id = 4;</code>
         * @param value The bytes for clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
  
        private long channelRpo_ ;
        /**
         * <code>optional int64 channel_rpo = 5;</code>
         * @return Whether the channelRpo field is set.
         */
        @java.lang.Override
        public boolean hasChannelRpo() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <code>optional int64 channel_rpo = 5;</code>
         * @return The channelRpo.
         */
        @java.lang.Override
        public long getChannelRpo() {
          return channelRpo_;
        }
        /**
         * <code>optional int64 channel_rpo = 5;</code>
         * @param value The channelRpo to set.
         * @return This builder for chaining.
         */
        public Builder setChannelRpo(long value) {
  
          channelRpo_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 channel_rpo = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearChannelRpo() {
          bitField0_ = (bitField0_ & ~0x00000010);
          channelRpo_ = 0L;
          onChanged();
          return this;
        }
  
        private long channelCount_ ;
        /**
         * <code>optional int64 channel_count = 6;</code>
         * @return Whether the channelCount field is set.
         */
        @java.lang.Override
        public boolean hasChannelCount() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <code>optional int64 channel_count = 6;</code>
         * @return The channelCount.
         */
        @java.lang.Override
        public long getChannelCount() {
          return channelCount_;
        }
        /**
         * <code>optional int64 channel_count = 6;</code>
         * @param value The channelCount to set.
         * @return This builder for chaining.
         */
        public Builder setChannelCount(long value) {
  
          channelCount_ = value;
          bitField0_ |= 0x00000020;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 channel_count = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearChannelCount() {
          bitField0_ = (bitField0_ & ~0x00000020);
          channelCount_ = 0L;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ChannelInfo)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ChannelInfo)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ChannelInfo>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ChannelInfo>() {
        @java.lang.Override
        public ChannelInfo parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ChannelInfo> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ChannelInfo> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface DescribeTunnelResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
       * @return Whether the tunnel field is set.
       */
      boolean hasTunnel();
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
       * @return The tunnel.
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo getTunnel();
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder getTunnelOrBuilder();
  
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo> 
          getChannelsList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo getChannels(int index);
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      int getChannelsCount();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder> 
          getChannelsOrBuilderList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder getChannelsOrBuilder(
          int index);
  
      /**
       * <code>optional int64 tunnel_rpo = 3;</code>
       * @return Whether the tunnelRpo field is set.
       */
      boolean hasTunnelRpo();
      /**
       * <code>optional int64 tunnel_rpo = 3;</code>
       * @return The tunnelRpo.
       */
      long getTunnelRpo();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelResponse}
     */
    public static final class DescribeTunnelResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelResponse)
        DescribeTunnelResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          DescribeTunnelResponse.class.getName());
      }
      // Use DescribeTunnelResponse.newBuilder() to construct.
      private DescribeTunnelResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private DescribeTunnelResponse() {
        channels_ = java.util.Collections.emptyList();
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_FIELD_NUMBER = 1;
      private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo tunnel_;
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
       * @return Whether the tunnel field is set.
       */
      @java.lang.Override
      public boolean hasTunnel() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
       * @return The tunnel.
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo getTunnel() {
        return tunnel_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.getDefaultInstance() : tunnel_;
      }
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder getTunnelOrBuilder() {
        return tunnel_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.getDefaultInstance() : tunnel_;
      }
  
      public static final int CHANNELS_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo> channels_;
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      @java.lang.Override
      public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo> getChannelsList() {
        return channels_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder> 
          getChannelsOrBuilderList() {
        return channels_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      @java.lang.Override
      public int getChannelsCount() {
        return channels_.size();
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo getChannels(int index) {
        return channels_.get(index);
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder getChannelsOrBuilder(
          int index) {
        return channels_.get(index);
      }
  
      public static final int TUNNEL_RPO_FIELD_NUMBER = 3;
      private long tunnelRpo_ = 0L;
      /**
       * <code>optional int64 tunnel_rpo = 3;</code>
       * @return Whether the tunnelRpo field is set.
       */
      @java.lang.Override
      public boolean hasTunnelRpo() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional int64 tunnel_rpo = 3;</code>
       * @return The tunnelRpo.
       */
      @java.lang.Override
      public long getTunnelRpo() {
        return tunnelRpo_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasTunnel()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getTunnel().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getChannelsCount(); i++) {
          if (!getChannels(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getTunnel());
        }
        for (int i = 0; i < channels_.size(); i++) {
          output.writeMessage(2, channels_.get(i));
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt64(3, tunnelRpo_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getTunnel());
        }
        for (int i = 0; i < channels_.size(); i++) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, channels_.get(i));
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(3, tunnelRpo_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse) obj;
  
        if (hasTunnel() != other.hasTunnel()) return false;
        if (hasTunnel()) {
          if (!getTunnel()
              .equals(other.getTunnel())) return false;
        }
        if (!getChannelsList()
            .equals(other.getChannelsList())) return false;
        if (hasTunnelRpo() != other.hasTunnelRpo()) return false;
        if (hasTunnelRpo()) {
          if (getTunnelRpo()
              != other.getTunnelRpo()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnel()) {
          hash = (37 * hash) + TUNNEL_FIELD_NUMBER;
          hash = (53 * hash) + getTunnel().hashCode();
        }
        if (getChannelsCount() > 0) {
          hash = (37 * hash) + CHANNELS_FIELD_NUMBER;
          hash = (53 * hash) + getChannelsList().hashCode();
        }
        if (hasTunnelRpo()) {
          hash = (37 * hash) + TUNNEL_RPO_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getTunnelRpo());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
                  .alwaysUseFieldBuilders) {
            getTunnelFieldBuilder();
            getChannelsFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnel_ = null;
          if (tunnelBuilder_ != null) {
            tunnelBuilder_.dispose();
            tunnelBuilder_ = null;
          }
          if (channelsBuilder_ == null) {
            channels_ = java.util.Collections.emptyList();
          } else {
            channels_ = null;
            channelsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          tunnelRpo_ = 0L;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartialRepeatedFields(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse result) {
          if (channelsBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0)) {
              channels_ = java.util.Collections.unmodifiableList(channels_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.channels_ = channels_;
          } else {
            result.channels_ = channelsBuilder_.build();
          }
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnel_ = tunnelBuilder_ == null
                ? tunnel_
                : tunnelBuilder_.build();
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.tunnelRpo_ = tunnelRpo_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse.getDefaultInstance()) return this;
          if (other.hasTunnel()) {
            mergeTunnel(other.getTunnel());
          }
          if (channelsBuilder_ == null) {
            if (!other.channels_.isEmpty()) {
              if (channels_.isEmpty()) {
                channels_ = other.channels_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureChannelsIsMutable();
                channels_.addAll(other.channels_);
              }
              onChanged();
            }
          } else {
            if (!other.channels_.isEmpty()) {
              if (channelsBuilder_.isEmpty()) {
                channelsBuilder_.dispose();
                channelsBuilder_ = null;
                channels_ = other.channels_;
                bitField0_ = (bitField0_ & ~0x00000002);
                channelsBuilder_ = 
                  com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getChannelsFieldBuilder() : null;
              } else {
                channelsBuilder_.addAllMessages(other.channels_);
              }
            }
          }
          if (other.hasTunnelRpo()) {
            setTunnelRpo(other.getTunnelRpo());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnel()) {
            return false;
          }
          if (!getTunnel().isInitialized()) {
            return false;
          }
          for (int i = 0; i < getChannelsCount(); i++) {
            if (!getChannels(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getTunnelFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo m =
                      input.readMessage(
                          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.parser(),
                          extensionRegistry);
                  if (channelsBuilder_ == null) {
                    ensureChannelsIsMutable();
                    channels_.add(m);
                  } else {
                    channelsBuilder_.addMessage(m);
                  }
                  break;
                } // case 18
                case 24: {
                  tunnelRpo_ = input.readInt64();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo tunnel_;
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder> tunnelBuilder_;
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
         * @return Whether the tunnel field is set.
         */
        public boolean hasTunnel() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
         * @return The tunnel.
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo getTunnel() {
          if (tunnelBuilder_ == null) {
            return tunnel_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.getDefaultInstance() : tunnel_;
          } else {
            return tunnelBuilder_.getMessage();
          }
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
         */
        public Builder setTunnel(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo value) {
          if (tunnelBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            tunnel_ = value;
          } else {
            tunnelBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
         */
        public Builder setTunnel(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder builderForValue) {
          if (tunnelBuilder_ == null) {
            tunnel_ = builderForValue.build();
          } else {
            tunnelBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
         */
        public Builder mergeTunnel(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo value) {
          if (tunnelBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
              tunnel_ != null &&
              tunnel_ != com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.getDefaultInstance()) {
              getTunnelBuilder().mergeFrom(value);
            } else {
              tunnel_ = value;
            }
          } else {
            tunnelBuilder_.mergeFrom(value);
          }
          if (tunnel_ != null) {
            bitField0_ |= 0x00000001;
            onChanged();
          }
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
         */
        public Builder clearTunnel() {
          bitField0_ = (bitField0_ & ~0x00000001);
          tunnel_ = null;
          if (tunnelBuilder_ != null) {
            tunnelBuilder_.dispose();
            tunnelBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder getTunnelBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getTunnelFieldBuilder().getBuilder();
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder getTunnelOrBuilder() {
          if (tunnelBuilder_ != null) {
            return tunnelBuilder_.getMessageOrBuilder();
          } else {
            return tunnel_ == null ?
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.getDefaultInstance() : tunnel_;
          }
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.TunnelInfo tunnel = 1;</code>
         */
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder> 
            getTunnelFieldBuilder() {
          if (tunnelBuilder_ == null) {
            tunnelBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfo.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TunnelInfoOrBuilder>(
                    getTunnel(),
                    getParentForChildren(),
                    isClean());
            tunnel_ = null;
          }
          return tunnelBuilder_;
        }
  
        private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo> channels_ =
          java.util.Collections.emptyList();
        private void ensureChannelsIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            channels_ = new java.util.ArrayList<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo>(channels_);
            bitField0_ |= 0x00000002;
           }
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder> channelsBuilder_;
  
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo> getChannelsList() {
          if (channelsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(channels_);
          } else {
            return channelsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public int getChannelsCount() {
          if (channelsBuilder_ == null) {
            return channels_.size();
          } else {
            return channelsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo getChannels(int index) {
          if (channelsBuilder_ == null) {
            return channels_.get(index);
          } else {
            return channelsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public Builder setChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo value) {
          if (channelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureChannelsIsMutable();
            channels_.set(index, value);
            onChanged();
          } else {
            channelsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public Builder setChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder builderForValue) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.set(index, builderForValue.build());
            onChanged();
          } else {
            channelsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public Builder addChannels(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo value) {
          if (channelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureChannelsIsMutable();
            channels_.add(value);
            onChanged();
          } else {
            channelsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public Builder addChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo value) {
          if (channelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureChannelsIsMutable();
            channels_.add(index, value);
            onChanged();
          } else {
            channelsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public Builder addChannels(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder builderForValue) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.add(builderForValue.build());
            onChanged();
          } else {
            channelsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public Builder addChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder builderForValue) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.add(index, builderForValue.build());
            onChanged();
          } else {
            channelsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public Builder addAllChannels(
            java.lang.Iterable<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo> values) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            com.aliyun.ots.thirdparty.com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, channels_);
            onChanged();
          } else {
            channelsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public Builder clearChannels() {
          if (channelsBuilder_ == null) {
            channels_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            channelsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public Builder removeChannels(int index) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.remove(index);
            onChanged();
          } else {
            channelsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder getChannelsBuilder(
            int index) {
          return getChannelsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder getChannelsOrBuilder(
            int index) {
          if (channelsBuilder_ == null) {
            return channels_.get(index);  } else {
            return channelsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder> 
             getChannelsOrBuilderList() {
          if (channelsBuilder_ != null) {
            return channelsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(channels_);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder addChannelsBuilder() {
          return getChannelsFieldBuilder().addBuilder(
              com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder addChannelsBuilder(
            int index) {
          return getChannelsFieldBuilder().addBuilder(
              index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.ChannelInfo channels = 2;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder> 
             getChannelsBuilderList() {
          return getChannelsFieldBuilder().getBuilderList();
        }
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder> 
            getChannelsFieldBuilder() {
          if (channelsBuilder_ == null) {
            channelsBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfo.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelInfoOrBuilder>(
                    channels_,
                    ((bitField0_ & 0x00000002) != 0),
                    getParentForChildren(),
                    isClean());
            channels_ = null;
          }
          return channelsBuilder_;
        }
  
        private long tunnelRpo_ ;
        /**
         * <code>optional int64 tunnel_rpo = 3;</code>
         * @return Whether the tunnelRpo field is set.
         */
        @java.lang.Override
        public boolean hasTunnelRpo() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional int64 tunnel_rpo = 3;</code>
         * @return The tunnelRpo.
         */
        @java.lang.Override
        public long getTunnelRpo() {
          return tunnelRpo_;
        }
        /**
         * <code>optional int64 tunnel_rpo = 3;</code>
         * @param value The tunnelRpo to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelRpo(long value) {
  
          tunnelRpo_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 tunnel_rpo = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelRpo() {
          bitField0_ = (bitField0_ & ~0x00000004);
          tunnelRpo_ = 0L;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.DescribeTunnelResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DescribeTunnelResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<DescribeTunnelResponse>() {
        @java.lang.Override
        public DescribeTunnelResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DescribeTunnelResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<DescribeTunnelResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.DescribeTunnelResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface GetRpoRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.GetRpoRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>optional string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>optional string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.GetRpoRequest}
     */
    public static final class GetRpoRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.GetRpoRequest)
        GetRpoRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          GetRpoRequest.class.getName());
      }
      // Use GetRpoRequest.newBuilder() to construct.
      private GetRpoRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private GetRpoRequest() {
        tunnelId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>optional string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tunnelId_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tunnelId_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest) obj;
  
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.GetRpoRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.GetRpoRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnelId_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest.getDefaultInstance()) return this;
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>optional string tunnel_id = 1;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional string tunnel_id = 1;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string tunnel_id = 1;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string tunnel_id = 1;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>optional string tunnel_id = 1;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.GetRpoRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.GetRpoRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetRpoRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<GetRpoRequest>() {
        @java.lang.Override
        public GetRpoRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetRpoRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetRpoRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface GetRpoResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.GetRpoResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional bytes rpo_infos = 1;</code>
       * @return Whether the rpoInfos field is set.
       */
      boolean hasRpoInfos();
      /**
       * <code>optional bytes rpo_infos = 1;</code>
       * @return The rpoInfos.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getRpoInfos();
  
      /**
       * <code>optional bytes tunnel_rpo_infos = 2;</code>
       * @return Whether the tunnelRpoInfos field is set.
       */
      boolean hasTunnelRpoInfos();
      /**
       * <code>optional bytes tunnel_rpo_infos = 2;</code>
       * @return The tunnelRpoInfos.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getTunnelRpoInfos();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.GetRpoResponse}
     */
    public static final class GetRpoResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.GetRpoResponse)
        GetRpoResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          GetRpoResponse.class.getName());
      }
      // Use GetRpoResponse.newBuilder() to construct.
      private GetRpoResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private GetRpoResponse() {
        rpoInfos_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        tunnelRpoInfos_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse.Builder.class);
      }
  
      private int bitField0_;
      public static final int RPO_INFOS_FIELD_NUMBER = 1;
      private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString rpoInfos_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes rpo_infos = 1;</code>
       * @return Whether the rpoInfos field is set.
       */
      @java.lang.Override
      public boolean hasRpoInfos() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional bytes rpo_infos = 1;</code>
       * @return The rpoInfos.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getRpoInfos() {
        return rpoInfos_;
      }
  
      public static final int TUNNEL_RPO_INFOS_FIELD_NUMBER = 2;
      private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString tunnelRpoInfos_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes tunnel_rpo_infos = 2;</code>
       * @return Whether the tunnelRpoInfos field is set.
       */
      @java.lang.Override
      public boolean hasTunnelRpoInfos() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional bytes tunnel_rpo_infos = 2;</code>
       * @return The tunnelRpoInfos.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getTunnelRpoInfos() {
        return tunnelRpoInfos_;
      }
  
      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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeBytes(1, rpoInfos_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeBytes(2, tunnelRpoInfos_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, rpoInfos_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, tunnelRpoInfos_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse) obj;
  
        if (hasRpoInfos() != other.hasRpoInfos()) return false;
        if (hasRpoInfos()) {
          if (!getRpoInfos()
              .equals(other.getRpoInfos())) return false;
        }
        if (hasTunnelRpoInfos() != other.hasTunnelRpoInfos()) return false;
        if (hasTunnelRpoInfos()) {
          if (!getTunnelRpoInfos()
              .equals(other.getTunnelRpoInfos())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasRpoInfos()) {
          hash = (37 * hash) + RPO_INFOS_FIELD_NUMBER;
          hash = (53 * hash) + getRpoInfos().hashCode();
        }
        if (hasTunnelRpoInfos()) {
          hash = (37 * hash) + TUNNEL_RPO_INFOS_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelRpoInfos().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.GetRpoResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.GetRpoResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          rpoInfos_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
          tunnelRpoInfos_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.rpoInfos_ = rpoInfos_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.tunnelRpoInfos_ = tunnelRpoInfos_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse.getDefaultInstance()) return this;
          if (other.hasRpoInfos()) {
            setRpoInfos(other.getRpoInfos());
          }
          if (other.hasTunnelRpoInfos()) {
            setTunnelRpoInfos(other.getTunnelRpoInfos());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  rpoInfos_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  tunnelRpoInfos_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString rpoInfos_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes rpo_infos = 1;</code>
         * @return Whether the rpoInfos field is set.
         */
        @java.lang.Override
        public boolean hasRpoInfos() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional bytes rpo_infos = 1;</code>
         * @return The rpoInfos.
         */
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getRpoInfos() {
          return rpoInfos_;
        }
        /**
         * <code>optional bytes rpo_infos = 1;</code>
         * @param value The rpoInfos to set.
         * @return This builder for chaining.
         */
        public Builder setRpoInfos(com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          rpoInfos_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes rpo_infos = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearRpoInfos() {
          bitField0_ = (bitField0_ & ~0x00000001);
          rpoInfos_ = getDefaultInstance().getRpoInfos();
          onChanged();
          return this;
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString tunnelRpoInfos_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes tunnel_rpo_infos = 2;</code>
         * @return Whether the tunnelRpoInfos field is set.
         */
        @java.lang.Override
        public boolean hasTunnelRpoInfos() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional bytes tunnel_rpo_infos = 2;</code>
         * @return The tunnelRpoInfos.
         */
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getTunnelRpoInfos() {
          return tunnelRpoInfos_;
        }
        /**
         * <code>optional bytes tunnel_rpo_infos = 2;</code>
         * @param value The tunnelRpoInfos to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelRpoInfos(com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelRpoInfos_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes tunnel_rpo_infos = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelRpoInfos() {
          bitField0_ = (bitField0_ & ~0x00000002);
          tunnelRpoInfos_ = getDefaultInstance().getTunnelRpoInfos();
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.GetRpoResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.GetRpoResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetRpoResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<GetRpoResponse>() {
        @java.lang.Override
        public GetRpoResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetRpoResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetRpoResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetRpoResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ClientConfigOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ClientConfig)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       * seconds
       * </pre>
       *
       * <code>optional int64 timeout = 1;</code>
       * @return Whether the timeout field is set.
       */
      boolean hasTimeout();
      /**
       * <pre>
       * seconds
       * </pre>
       *
       * <code>optional int64 timeout = 1;</code>
       * @return The timeout.
       */
      long getTimeout();
  
      /**
       * <code>optional string client_tag = 2;</code>
       * @return Whether the clientTag field is set.
       */
      boolean hasClientTag();
      /**
       * <code>optional string client_tag = 2;</code>
       * @return The clientTag.
       */
      java.lang.String getClientTag();
      /**
       * <code>optional string client_tag = 2;</code>
       * @return The bytes for clientTag.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientTagBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ClientConfig}
     */
    public static final class ClientConfig extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ClientConfig)
        ClientConfigOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ClientConfig.class.getName());
      }
      // Use ClientConfig.newBuilder() to construct.
      private ClientConfig(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ClientConfig() {
        clientTag_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.Builder.class);
      }
  
      private int bitField0_;
      public static final int TIMEOUT_FIELD_NUMBER = 1;
      private long timeout_ = 0L;
      /**
       * <pre>
       * seconds
       * </pre>
       *
       * <code>optional int64 timeout = 1;</code>
       * @return Whether the timeout field is set.
       */
      @java.lang.Override
      public boolean hasTimeout() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * seconds
       * </pre>
       *
       * <code>optional int64 timeout = 1;</code>
       * @return The timeout.
       */
      @java.lang.Override
      public long getTimeout() {
        return timeout_;
      }
  
      public static final int CLIENT_TAG_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object clientTag_ = "";
      /**
       * <code>optional string client_tag = 2;</code>
       * @return Whether the clientTag field is set.
       */
      @java.lang.Override
      public boolean hasClientTag() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string client_tag = 2;</code>
       * @return The clientTag.
       */
      @java.lang.Override
      public java.lang.String getClientTag() {
        java.lang.Object ref = clientTag_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            clientTag_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string client_tag = 2;</code>
       * @return The bytes for clientTag.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientTagBytes() {
        java.lang.Object ref = clientTag_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientTag_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt64(1, timeout_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, clientTag_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(1, timeout_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, clientTag_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig) obj;
  
        if (hasTimeout() != other.hasTimeout()) return false;
        if (hasTimeout()) {
          if (getTimeout()
              != other.getTimeout()) return false;
        }
        if (hasClientTag() != other.hasClientTag()) return false;
        if (hasClientTag()) {
          if (!getClientTag()
              .equals(other.getClientTag())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTimeout()) {
          hash = (37 * hash) + TIMEOUT_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getTimeout());
        }
        if (hasClientTag()) {
          hash = (37 * hash) + CLIENT_TAG_FIELD_NUMBER;
          hash = (53 * hash) + getClientTag().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ClientConfig}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ClientConfig)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfigOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          timeout_ = 0L;
          clientTag_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.timeout_ = timeout_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.clientTag_ = clientTag_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.getDefaultInstance()) return this;
          if (other.hasTimeout()) {
            setTimeout(other.getTimeout());
          }
          if (other.hasClientTag()) {
            clientTag_ = other.clientTag_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  timeout_ = input.readInt64();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 18: {
                  clientTag_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private long timeout_ ;
        /**
         * <pre>
         * seconds
         * </pre>
         *
         * <code>optional int64 timeout = 1;</code>
         * @return Whether the timeout field is set.
         */
        @java.lang.Override
        public boolean hasTimeout() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * seconds
         * </pre>
         *
         * <code>optional int64 timeout = 1;</code>
         * @return The timeout.
         */
        @java.lang.Override
        public long getTimeout() {
          return timeout_;
        }
        /**
         * <pre>
         * seconds
         * </pre>
         *
         * <code>optional int64 timeout = 1;</code>
         * @param value The timeout to set.
         * @return This builder for chaining.
         */
        public Builder setTimeout(long value) {
  
          timeout_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * seconds
         * </pre>
         *
         * <code>optional int64 timeout = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTimeout() {
          bitField0_ = (bitField0_ & ~0x00000001);
          timeout_ = 0L;
          onChanged();
          return this;
        }
  
        private java.lang.Object clientTag_ = "";
        /**
         * <code>optional string client_tag = 2;</code>
         * @return Whether the clientTag field is set.
         */
        public boolean hasClientTag() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string client_tag = 2;</code>
         * @return The clientTag.
         */
        public java.lang.String getClientTag() {
          java.lang.Object ref = clientTag_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              clientTag_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string client_tag = 2;</code>
         * @return The bytes for clientTag.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getClientTagBytes() {
          java.lang.Object ref = clientTag_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            clientTag_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string client_tag = 2;</code>
         * @param value The clientTag to set.
         * @return This builder for chaining.
         */
        public Builder setClientTag(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          clientTag_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>optional string client_tag = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearClientTag() {
          clientTag_ = getDefaultInstance().getClientTag();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>optional string client_tag = 2;</code>
         * @param value The bytes for clientTag to set.
         * @return This builder for chaining.
         */
        public Builder setClientTagBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          clientTag_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ClientConfig)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ClientConfig)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ClientConfig>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ClientConfig>() {
        @java.lang.Override
        public ClientConfig parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ClientConfig> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ClientConfig> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ConnectRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ConnectRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
  
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
       * @return Whether the clientConfig field is set.
       */
      boolean hasClientConfig();
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
       * @return The clientConfig.
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig getClientConfig();
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfigOrBuilder getClientConfigOrBuilder();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ConnectRequest}
     */
    public static final class ConnectRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ConnectRequest)
        ConnectRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ConnectRequest.class.getName());
      }
      // Use ConnectRequest.newBuilder() to construct.
      private ConnectRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ConnectRequest() {
        tunnelId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CLIENT_CONFIG_FIELD_NUMBER = 2;
      private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig clientConfig_;
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
       * @return Whether the clientConfig field is set.
       */
      @java.lang.Override
      public boolean hasClientConfig() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
       * @return The clientConfig.
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig getClientConfig() {
        return clientConfig_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.getDefaultInstance() : clientConfig_;
      }
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfigOrBuilder getClientConfigOrBuilder() {
        return clientConfig_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.getDefaultInstance() : clientConfig_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasTunnelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeMessage(2, getClientConfig());
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getClientConfig());
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest) obj;
  
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (hasClientConfig() != other.hasClientConfig()) return false;
        if (hasClientConfig()) {
          if (!getClientConfig()
              .equals(other.getClientConfig())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        if (hasClientConfig()) {
          hash = (37 * hash) + CLIENT_CONFIG_FIELD_NUMBER;
          hash = (53 * hash) + getClientConfig().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ConnectRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ConnectRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
                  .alwaysUseFieldBuilders) {
            getClientConfigFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnelId_ = "";
          clientConfig_ = null;
          if (clientConfigBuilder_ != null) {
            clientConfigBuilder_.dispose();
            clientConfigBuilder_ = null;
          }
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.clientConfig_ = clientConfigBuilder_ == null
                ? clientConfig_
                : clientConfigBuilder_.build();
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest.getDefaultInstance()) return this;
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasClientConfig()) {
            mergeClientConfig(other.getClientConfig());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnelId()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getClientConfigFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig clientConfig_;
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfigOrBuilder> clientConfigBuilder_;
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
         * @return Whether the clientConfig field is set.
         */
        public boolean hasClientConfig() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
         * @return The clientConfig.
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig getClientConfig() {
          if (clientConfigBuilder_ == null) {
            return clientConfig_ == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.getDefaultInstance() : clientConfig_;
          } else {
            return clientConfigBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
         */
        public Builder setClientConfig(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig value) {
          if (clientConfigBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            clientConfig_ = value;
          } else {
            clientConfigBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
         */
        public Builder setClientConfig(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.Builder builderForValue) {
          if (clientConfigBuilder_ == null) {
            clientConfig_ = builderForValue.build();
          } else {
            clientConfigBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
         */
        public Builder mergeClientConfig(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig value) {
          if (clientConfigBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
              clientConfig_ != null &&
              clientConfig_ != com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.getDefaultInstance()) {
              getClientConfigBuilder().mergeFrom(value);
            } else {
              clientConfig_ = value;
            }
          } else {
            clientConfigBuilder_.mergeFrom(value);
          }
          if (clientConfig_ != null) {
            bitField0_ |= 0x00000002;
            onChanged();
          }
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
         */
        public Builder clearClientConfig() {
          bitField0_ = (bitField0_ & ~0x00000002);
          clientConfig_ = null;
          if (clientConfigBuilder_ != null) {
            clientConfigBuilder_.dispose();
            clientConfigBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.Builder getClientConfigBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getClientConfigFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfigOrBuilder getClientConfigOrBuilder() {
          if (clientConfigBuilder_ != null) {
            return clientConfigBuilder_.getMessageOrBuilder();
          } else {
            return clientConfig_ == null ?
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.getDefaultInstance() : clientConfig_;
          }
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.ClientConfig client_config = 2;</code>
         */
        private com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfigOrBuilder> 
            getClientConfigFieldBuilder() {
          if (clientConfigBuilder_ == null) {
            clientConfigBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.SingleFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfig.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ClientConfigOrBuilder>(
                    getClientConfig(),
                    getParentForChildren(),
                    isClean());
            clientConfig_ = null;
          }
          return clientConfigBuilder_;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ConnectRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ConnectRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ConnectRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ConnectRequest>() {
        @java.lang.Override
        public ConnectRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ConnectRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ConnectRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ConnectResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ConnectResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string client_id = 1;</code>
       * @return Whether the clientId field is set.
       */
      boolean hasClientId();
      /**
       * <code>required string client_id = 1;</code>
       * @return The clientId.
       */
      java.lang.String getClientId();
      /**
       * <code>required string client_id = 1;</code>
       * @return The bytes for clientId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ConnectResponse}
     */
    public static final class ConnectResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ConnectResponse)
        ConnectResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ConnectResponse.class.getName());
      }
      // Use ConnectResponse.newBuilder() to construct.
      private ConnectResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ConnectResponse() {
        clientId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse.Builder.class);
      }
  
      private int bitField0_;
      public static final int CLIENT_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object clientId_ = "";
      /**
       * <code>required string client_id = 1;</code>
       * @return Whether the clientId field is set.
       */
      @java.lang.Override
      public boolean hasClientId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string client_id = 1;</code>
       * @return The clientId.
       */
      @java.lang.Override
      public java.lang.String getClientId() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            clientId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string client_id = 1;</code>
       * @return The bytes for clientId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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;
  
        if (!hasClientId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, clientId_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, clientId_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse) obj;
  
        if (hasClientId() != other.hasClientId()) return false;
        if (hasClientId()) {
          if (!getClientId()
              .equals(other.getClientId())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasClientId()) {
          hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getClientId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ConnectResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ConnectResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          clientId_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.clientId_ = clientId_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse.getDefaultInstance()) return this;
          if (other.hasClientId()) {
            clientId_ = other.clientId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasClientId()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  clientId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object clientId_ = "";
        /**
         * <code>required string client_id = 1;</code>
         * @return Whether the clientId field is set.
         */
        public boolean hasClientId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string client_id = 1;</code>
         * @return The clientId.
         */
        public java.lang.String getClientId() {
          java.lang.Object ref = clientId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              clientId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string client_id = 1;</code>
         * @return The bytes for clientId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getClientIdBytes() {
          java.lang.Object ref = clientId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            clientId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string client_id = 1;</code>
         * @param value The clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearClientId() {
          clientId_ = getDefaultInstance().getClientId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 1;</code>
         * @param value The bytes for clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ConnectResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ConnectResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ConnectResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ConnectResponse>() {
        @java.lang.Override
        public ConnectResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ConnectResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ConnectResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ConnectResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ChannelOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.Channel)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string channel_id = 1;</code>
       * @return Whether the channelId field is set.
       */
      boolean hasChannelId();
      /**
       * <code>required string channel_id = 1;</code>
       * @return The channelId.
       */
      java.lang.String getChannelId();
      /**
       * <code>required string channel_id = 1;</code>
       * @return The bytes for channelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes();
  
      /**
       * <code>required int64 version = 2;</code>
       * @return Whether the version field is set.
       */
      boolean hasVersion();
      /**
       * <code>required int64 version = 2;</code>
       * @return The version.
       */
      long getVersion();
  
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.ChannelStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      boolean hasStatus();
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.ChannelStatus status = 3;</code>
       * @return The status.
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus getStatus();
  
      /**
       * <pre>
       * range, or info that client sends to master, such as process speed.
       * </pre>
       *
       * <code>optional bytes detail = 4;</code>
       * @return Whether the detail field is set.
       */
      boolean hasDetail();
      /**
       * <pre>
       * range, or info that client sends to master, such as process speed.
       * </pre>
       *
       * <code>optional bytes detail = 4;</code>
       * @return The detail.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getDetail();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Channel}
     */
    public static final class Channel extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.Channel)
        ChannelOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          Channel.class.getName());
      }
      // Use Channel.newBuilder() to construct.
      private Channel(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private Channel() {
        channelId_ = "";
        status_ = 1;
        detail_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder.class);
      }
  
      private int bitField0_;
      public static final int CHANNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 1;</code>
       * @return Whether the channelId field is set.
       */
      @java.lang.Override
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string channel_id = 1;</code>
       * @return The channelId.
       */
      @java.lang.Override
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            channelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string channel_id = 1;</code>
       * @return The bytes for channelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int VERSION_FIELD_NUMBER = 2;
      private long version_ = 0L;
      /**
       * <code>required int64 version = 2;</code>
       * @return Whether the version field is set.
       */
      @java.lang.Override
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required int64 version = 2;</code>
       * @return The version.
       */
      @java.lang.Override
      public long getVersion() {
        return version_;
      }
  
      public static final int STATUS_FIELD_NUMBER = 3;
      private int status_ = 1;
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.ChannelStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      @java.lang.Override public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.ChannelStatus status = 3;</code>
       * @return The status.
       */
      @java.lang.Override public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus getStatus() {
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus result = com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus.forNumber(status_);
        return result == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus.OPEN : result;
      }
  
      public static final int DETAIL_FIELD_NUMBER = 4;
      private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString detail_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * range, or info that client sends to master, such as process speed.
       * </pre>
       *
       * <code>optional bytes detail = 4;</code>
       * @return Whether the detail field is set.
       */
      @java.lang.Override
      public boolean hasDetail() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * range, or info that client sends to master, such as process speed.
       * </pre>
       *
       * <code>optional bytes detail = 4;</code>
       * @return The detail.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getDetail() {
        return detail_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasChannelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasVersion()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStatus()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, channelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt64(2, version_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeEnum(3, status_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeBytes(4, detail_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, channelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, version_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeEnumSize(3, status_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, detail_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel) obj;
  
        if (hasChannelId() != other.hasChannelId()) return false;
        if (hasChannelId()) {
          if (!getChannelId()
              .equals(other.getChannelId())) return false;
        }
        if (hasVersion() != other.hasVersion()) return false;
        if (hasVersion()) {
          if (getVersion()
              != other.getVersion()) return false;
        }
        if (hasStatus() != other.hasStatus()) return false;
        if (hasStatus()) {
          if (status_ != other.status_) return false;
        }
        if (hasDetail() != other.hasDetail()) return false;
        if (hasDetail()) {
          if (!getDetail()
              .equals(other.getDetail())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId().hashCode();
        }
        if (hasVersion()) {
          hash = (37 * hash) + VERSION_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getVersion());
        }
        if (hasStatus()) {
          hash = (37 * hash) + STATUS_FIELD_NUMBER;
          hash = (53 * hash) + status_;
        }
        if (hasDetail()) {
          hash = (37 * hash) + DETAIL_FIELD_NUMBER;
          hash = (53 * hash) + getDetail().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Channel}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.Channel)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          channelId_ = "";
          version_ = 0L;
          status_ = 1;
          detail_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.channelId_ = channelId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.version_ = version_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.status_ = status_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.detail_ = detail_;
            to_bitField0_ |= 0x00000008;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.getDefaultInstance()) return this;
          if (other.hasChannelId()) {
            channelId_ = other.channelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasVersion()) {
            setVersion(other.getVersion());
          }
          if (other.hasStatus()) {
            setStatus(other.getStatus());
          }
          if (other.hasDetail()) {
            setDetail(other.getDetail());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasChannelId()) {
            return false;
          }
          if (!hasVersion()) {
            return false;
          }
          if (!hasStatus()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  channelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 16: {
                  version_ = input.readInt64();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 24: {
                  int tmpRaw = input.readEnum();
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus tmpValue =
                      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus.forNumber(tmpRaw);
                  if (tmpValue == null) {
                    mergeUnknownVarintField(3, tmpRaw);
                  } else {
                    status_ = tmpRaw;
                    bitField0_ |= 0x00000004;
                  }
                  break;
                } // case 24
                case 34: {
                  detail_ = input.readBytes();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object channelId_ = "";
        /**
         * <code>required string channel_id = 1;</code>
         * @return Whether the channelId field is set.
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @return The channelId.
         */
        public java.lang.String getChannelId() {
          java.lang.Object ref = channelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              channelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @return The bytes for channelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getChannelIdBytes() {
          java.lang.Object ref = channelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            channelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @param value The channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearChannelId() {
          channelId_ = getDefaultInstance().getChannelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 1;</code>
         * @param value The bytes for channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private long version_ ;
        /**
         * <code>required int64 version = 2;</code>
         * @return Whether the version field is set.
         */
        @java.lang.Override
        public boolean hasVersion() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required int64 version = 2;</code>
         * @return The version.
         */
        @java.lang.Override
        public long getVersion() {
          return version_;
        }
        /**
         * <code>required int64 version = 2;</code>
         * @param value The version to set.
         * @return This builder for chaining.
         */
        public Builder setVersion(long value) {
  
          version_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required int64 version = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearVersion() {
          bitField0_ = (bitField0_ & ~0x00000002);
          version_ = 0L;
          onChanged();
          return this;
        }
  
        private int status_ = 1;
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.ChannelStatus status = 3;</code>
         * @return Whether the status field is set.
         */
        @java.lang.Override public boolean hasStatus() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.ChannelStatus status = 3;</code>
         * @return The status.
         */
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus getStatus() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus result = com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus.forNumber(status_);
          return result == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus.OPEN : result;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.ChannelStatus status = 3;</code>
         * @param value The status to set.
         * @return This builder for chaining.
         */
        public Builder setStatus(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelStatus value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000004;
          status_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.ChannelStatus status = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearStatus() {
          bitField0_ = (bitField0_ & ~0x00000004);
          status_ = 1;
          onChanged();
          return this;
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString detail_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        /**
         * <pre>
         * range, or info that client sends to master, such as process speed.
         * </pre>
         *
         * <code>optional bytes detail = 4;</code>
         * @return Whether the detail field is set.
         */
        @java.lang.Override
        public boolean hasDetail() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <pre>
         * range, or info that client sends to master, such as process speed.
         * </pre>
         *
         * <code>optional bytes detail = 4;</code>
         * @return The detail.
         */
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getDetail() {
          return detail_;
        }
        /**
         * <pre>
         * range, or info that client sends to master, such as process speed.
         * </pre>
         *
         * <code>optional bytes detail = 4;</code>
         * @param value The detail to set.
         * @return This builder for chaining.
         */
        public Builder setDetail(com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          detail_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * range, or info that client sends to master, such as process speed.
         * </pre>
         *
         * <code>optional bytes detail = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearDetail() {
          bitField0_ = (bitField0_ & ~0x00000008);
          detail_ = getDefaultInstance().getDetail();
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.Channel)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.Channel)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Channel>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<Channel>() {
        @java.lang.Override
        public Channel parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Channel> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Channel> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface HeartbeatRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.HeartbeatRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
  
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      boolean hasClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      java.lang.String getClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes();
  
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> 
          getChannelsList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel getChannels(int index);
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      int getChannelsCount();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> 
          getChannelsOrBuilderList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder getChannelsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.HeartbeatRequest}
     */
    public static final class HeartbeatRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.HeartbeatRequest)
        HeartbeatRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          HeartbeatRequest.class.getName());
      }
      // Use HeartbeatRequest.newBuilder() to construct.
      private HeartbeatRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private HeartbeatRequest() {
        tunnelId_ = "";
        clientId_ = "";
        channels_ = java.util.Collections.emptyList();
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CLIENT_ID_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object clientId_ = "";
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      @java.lang.Override
      public boolean hasClientId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      @java.lang.Override
      public java.lang.String getClientId() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            clientId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CHANNELS_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> channels_;
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      @java.lang.Override
      public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> getChannelsList() {
        return channels_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> 
          getChannelsOrBuilderList() {
        return channels_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      @java.lang.Override
      public int getChannelsCount() {
        return channels_.size();
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel getChannels(int index) {
        return channels_.get(index);
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder getChannelsOrBuilder(
          int index) {
        return channels_.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;
  
        if (!hasTunnelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasClientId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getChannelsCount(); i++) {
          if (!getChannels(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, clientId_);
        }
        for (int i = 0; i < channels_.size(); i++) {
          output.writeMessage(3, channels_.get(i));
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, clientId_);
        }
        for (int i = 0; i < channels_.size(); i++) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, channels_.get(i));
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest) obj;
  
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (hasClientId() != other.hasClientId()) return false;
        if (hasClientId()) {
          if (!getClientId()
              .equals(other.getClientId())) return false;
        }
        if (!getChannelsList()
            .equals(other.getChannelsList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        if (hasClientId()) {
          hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getClientId().hashCode();
        }
        if (getChannelsCount() > 0) {
          hash = (37 * hash) + CHANNELS_FIELD_NUMBER;
          hash = (53 * hash) + getChannelsList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.HeartbeatRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.HeartbeatRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnelId_ = "";
          clientId_ = "";
          if (channelsBuilder_ == null) {
            channels_ = java.util.Collections.emptyList();
          } else {
            channels_ = null;
            channelsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartialRepeatedFields(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest result) {
          if (channelsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0)) {
              channels_ = java.util.Collections.unmodifiableList(channels_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.channels_ = channels_;
          } else {
            result.channels_ = channelsBuilder_.build();
          }
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.clientId_ = clientId_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest.getDefaultInstance()) return this;
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasClientId()) {
            clientId_ = other.clientId_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (channelsBuilder_ == null) {
            if (!other.channels_.isEmpty()) {
              if (channels_.isEmpty()) {
                channels_ = other.channels_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureChannelsIsMutable();
                channels_.addAll(other.channels_);
              }
              onChanged();
            }
          } else {
            if (!other.channels_.isEmpty()) {
              if (channelsBuilder_.isEmpty()) {
                channelsBuilder_.dispose();
                channelsBuilder_ = null;
                channels_ = other.channels_;
                bitField0_ = (bitField0_ & ~0x00000004);
                channelsBuilder_ = 
                  com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getChannelsFieldBuilder() : null;
              } else {
                channelsBuilder_.addAllMessages(other.channels_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnelId()) {
            return false;
          }
          if (!hasClientId()) {
            return false;
          }
          for (int i = 0; i < getChannelsCount(); i++) {
            if (!getChannels(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  clientId_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel m =
                      input.readMessage(
                          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.parser(),
                          extensionRegistry);
                  if (channelsBuilder_ == null) {
                    ensureChannelsIsMutable();
                    channels_.add(m);
                  } else {
                    channelsBuilder_.addMessage(m);
                  }
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object clientId_ = "";
        /**
         * <code>required string client_id = 2;</code>
         * @return Whether the clientId field is set.
         */
        public boolean hasClientId() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The clientId.
         */
        public java.lang.String getClientId() {
          java.lang.Object ref = clientId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              clientId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The bytes for clientId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getClientIdBytes() {
          java.lang.Object ref = clientId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            clientId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearClientId() {
          clientId_ = getDefaultInstance().getClientId();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The bytes for clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> channels_ =
          java.util.Collections.emptyList();
        private void ensureChannelsIsMutable() {
          if (!((bitField0_ & 0x00000004) != 0)) {
            channels_ = new java.util.ArrayList<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel>(channels_);
            bitField0_ |= 0x00000004;
           }
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> channelsBuilder_;
  
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> getChannelsList() {
          if (channelsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(channels_);
          } else {
            return channelsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public int getChannelsCount() {
          if (channelsBuilder_ == null) {
            return channels_.size();
          } else {
            return channelsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel getChannels(int index) {
          if (channelsBuilder_ == null) {
            return channels_.get(index);
          } else {
            return channelsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public Builder setChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel value) {
          if (channelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureChannelsIsMutable();
            channels_.set(index, value);
            onChanged();
          } else {
            channelsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public Builder setChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder builderForValue) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.set(index, builderForValue.build());
            onChanged();
          } else {
            channelsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public Builder addChannels(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel value) {
          if (channelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureChannelsIsMutable();
            channels_.add(value);
            onChanged();
          } else {
            channelsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public Builder addChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel value) {
          if (channelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureChannelsIsMutable();
            channels_.add(index, value);
            onChanged();
          } else {
            channelsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public Builder addChannels(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder builderForValue) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.add(builderForValue.build());
            onChanged();
          } else {
            channelsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public Builder addChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder builderForValue) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.add(index, builderForValue.build());
            onChanged();
          } else {
            channelsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public Builder addAllChannels(
            java.lang.Iterable<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> values) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            com.aliyun.ots.thirdparty.com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, channels_);
            onChanged();
          } else {
            channelsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public Builder clearChannels() {
          if (channelsBuilder_ == null) {
            channels_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            channelsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public Builder removeChannels(int index) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.remove(index);
            onChanged();
          } else {
            channelsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder getChannelsBuilder(
            int index) {
          return getChannelsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder getChannelsOrBuilder(
            int index) {
          if (channelsBuilder_ == null) {
            return channels_.get(index);  } else {
            return channelsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> 
             getChannelsOrBuilderList() {
          if (channelsBuilder_ != null) {
            return channelsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(channels_);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder addChannelsBuilder() {
          return getChannelsFieldBuilder().addBuilder(
              com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder addChannelsBuilder(
            int index) {
          return getChannelsFieldBuilder().addBuilder(
              index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 3;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder> 
             getChannelsBuilderList() {
          return getChannelsFieldBuilder().getBuilderList();
        }
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> 
            getChannelsFieldBuilder() {
          if (channelsBuilder_ == null) {
            channelsBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder>(
                    channels_,
                    ((bitField0_ & 0x00000004) != 0),
                    getParentForChildren(),
                    isClean());
            channels_ = null;
          }
          return channelsBuilder_;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.HeartbeatRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.HeartbeatRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<HeartbeatRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<HeartbeatRequest>() {
        @java.lang.Override
        public HeartbeatRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<HeartbeatRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<HeartbeatRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface HeartbeatResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.HeartbeatResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> 
          getChannelsList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel getChannels(int index);
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      int getChannelsCount();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> 
          getChannelsOrBuilderList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder getChannelsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.HeartbeatResponse}
     */
    public static final class HeartbeatResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.HeartbeatResponse)
        HeartbeatResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          HeartbeatResponse.class.getName());
      }
      // Use HeartbeatResponse.newBuilder() to construct.
      private HeartbeatResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private HeartbeatResponse() {
        channels_ = java.util.Collections.emptyList();
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse.Builder.class);
      }
  
      public static final int CHANNELS_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> channels_;
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      @java.lang.Override
      public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> getChannelsList() {
        return channels_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> 
          getChannelsOrBuilderList() {
        return channels_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      @java.lang.Override
      public int getChannelsCount() {
        return channels_.size();
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel getChannels(int index) {
        return channels_.get(index);
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder getChannelsOrBuilder(
          int index) {
        return channels_.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;
  
        for (int i = 0; i < getChannelsCount(); i++) {
          if (!getChannels(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < channels_.size(); i++) {
          output.writeMessage(1, channels_.get(i));
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        for (int i = 0; i < channels_.size(); i++) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, channels_.get(i));
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse) obj;
  
        if (!getChannelsList()
            .equals(other.getChannelsList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getChannelsCount() > 0) {
          hash = (37 * hash) + CHANNELS_FIELD_NUMBER;
          hash = (53 * hash) + getChannelsList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.HeartbeatResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.HeartbeatResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (channelsBuilder_ == null) {
            channels_ = java.util.Collections.emptyList();
          } else {
            channels_ = null;
            channelsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartialRepeatedFields(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse result) {
          if (channelsBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              channels_ = java.util.Collections.unmodifiableList(channels_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.channels_ = channels_;
          } else {
            result.channels_ = channelsBuilder_.build();
          }
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse result) {
          int from_bitField0_ = bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse.getDefaultInstance()) return this;
          if (channelsBuilder_ == null) {
            if (!other.channels_.isEmpty()) {
              if (channels_.isEmpty()) {
                channels_ = other.channels_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureChannelsIsMutable();
                channels_.addAll(other.channels_);
              }
              onChanged();
            }
          } else {
            if (!other.channels_.isEmpty()) {
              if (channelsBuilder_.isEmpty()) {
                channelsBuilder_.dispose();
                channelsBuilder_ = null;
                channels_ = other.channels_;
                bitField0_ = (bitField0_ & ~0x00000001);
                channelsBuilder_ = 
                  com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getChannelsFieldBuilder() : null;
              } else {
                channelsBuilder_.addAllMessages(other.channels_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          for (int i = 0; i < getChannelsCount(); i++) {
            if (!getChannels(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel m =
                      input.readMessage(
                          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.parser(),
                          extensionRegistry);
                  if (channelsBuilder_ == null) {
                    ensureChannelsIsMutable();
                    channels_.add(m);
                  } else {
                    channelsBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> channels_ =
          java.util.Collections.emptyList();
        private void ensureChannelsIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            channels_ = new java.util.ArrayList<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel>(channels_);
            bitField0_ |= 0x00000001;
           }
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> channelsBuilder_;
  
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> getChannelsList() {
          if (channelsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(channels_);
          } else {
            return channelsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public int getChannelsCount() {
          if (channelsBuilder_ == null) {
            return channels_.size();
          } else {
            return channelsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel getChannels(int index) {
          if (channelsBuilder_ == null) {
            return channels_.get(index);
          } else {
            return channelsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public Builder setChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel value) {
          if (channelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureChannelsIsMutable();
            channels_.set(index, value);
            onChanged();
          } else {
            channelsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public Builder setChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder builderForValue) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.set(index, builderForValue.build());
            onChanged();
          } else {
            channelsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public Builder addChannels(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel value) {
          if (channelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureChannelsIsMutable();
            channels_.add(value);
            onChanged();
          } else {
            channelsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public Builder addChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel value) {
          if (channelsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureChannelsIsMutable();
            channels_.add(index, value);
            onChanged();
          } else {
            channelsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public Builder addChannels(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder builderForValue) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.add(builderForValue.build());
            onChanged();
          } else {
            channelsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public Builder addChannels(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder builderForValue) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.add(index, builderForValue.build());
            onChanged();
          } else {
            channelsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public Builder addAllChannels(
            java.lang.Iterable<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel> values) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            com.aliyun.ots.thirdparty.com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, channels_);
            onChanged();
          } else {
            channelsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public Builder clearChannels() {
          if (channelsBuilder_ == null) {
            channels_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            channelsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public Builder removeChannels(int index) {
          if (channelsBuilder_ == null) {
            ensureChannelsIsMutable();
            channels_.remove(index);
            onChanged();
          } else {
            channelsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder getChannelsBuilder(
            int index) {
          return getChannelsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder getChannelsOrBuilder(
            int index) {
          if (channelsBuilder_ == null) {
            return channels_.get(index);  } else {
            return channelsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> 
             getChannelsOrBuilderList() {
          if (channelsBuilder_ != null) {
            return channelsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(channels_);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder addChannelsBuilder() {
          return getChannelsFieldBuilder().addBuilder(
              com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder addChannelsBuilder(
            int index) {
          return getChannelsFieldBuilder().addBuilder(
              index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Channel channels = 1;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder> 
             getChannelsBuilderList() {
          return getChannelsFieldBuilder().getBuilderList();
        }
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder> 
            getChannelsFieldBuilder() {
          if (channelsBuilder_ == null) {
            channelsBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Channel.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ChannelOrBuilder>(
                    channels_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            channels_ = null;
          }
          return channelsBuilder_;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.HeartbeatResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.HeartbeatResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<HeartbeatResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<HeartbeatResponse>() {
        @java.lang.Override
        public HeartbeatResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<HeartbeatResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<HeartbeatResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.HeartbeatResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ShutdownRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ShutdownRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
  
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      boolean hasClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      java.lang.String getClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ShutdownRequest}
     */
    public static final class ShutdownRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ShutdownRequest)
        ShutdownRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ShutdownRequest.class.getName());
      }
      // Use ShutdownRequest.newBuilder() to construct.
      private ShutdownRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ShutdownRequest() {
        tunnelId_ = "";
        clientId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CLIENT_ID_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object clientId_ = "";
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      @java.lang.Override
      public boolean hasClientId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      @java.lang.Override
      public java.lang.String getClientId() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            clientId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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;
  
        if (!hasTunnelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasClientId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, clientId_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, clientId_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest) obj;
  
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (hasClientId() != other.hasClientId()) return false;
        if (hasClientId()) {
          if (!getClientId()
              .equals(other.getClientId())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        if (hasClientId()) {
          hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getClientId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ShutdownRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ShutdownRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnelId_ = "";
          clientId_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.clientId_ = clientId_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest.getDefaultInstance()) return this;
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasClientId()) {
            clientId_ = other.clientId_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnelId()) {
            return false;
          }
          if (!hasClientId()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  clientId_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object clientId_ = "";
        /**
         * <code>required string client_id = 2;</code>
         * @return Whether the clientId field is set.
         */
        public boolean hasClientId() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The clientId.
         */
        public java.lang.String getClientId() {
          java.lang.Object ref = clientId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              clientId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The bytes for clientId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getClientIdBytes() {
          java.lang.Object ref = clientId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            clientId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearClientId() {
          clientId_ = getDefaultInstance().getClientId();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The bytes for clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ShutdownRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ShutdownRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ShutdownRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ShutdownRequest>() {
        @java.lang.Override
        public ShutdownRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ShutdownRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ShutdownRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ShutdownResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ShutdownResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ShutdownResponse}
     */
    public static final class ShutdownResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ShutdownResponse)
        ShutdownResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ShutdownResponse.class.getName());
      }
      // Use ShutdownResponse.newBuilder() to construct.
      private ShutdownResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ShutdownResponse() {
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse.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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse) obj;
  
        if (!getUnknownFields().equals(other.getUnknownFields())) 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) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ShutdownResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ShutdownResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse(this);
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ShutdownResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ShutdownResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ShutdownResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ShutdownResponse>() {
        @java.lang.Override
        public ShutdownResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ShutdownResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ShutdownResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ShutdownResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface GetCheckpointRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
  
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      boolean hasClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      java.lang.String getClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes();
  
      /**
       * <code>required string channel_id = 3;</code>
       * @return Whether the channelId field is set.
       */
      boolean hasChannelId();
      /**
       * <code>required string channel_id = 3;</code>
       * @return The channelId.
       */
      java.lang.String getChannelId();
      /**
       * <code>required string channel_id = 3;</code>
       * @return The bytes for channelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.GetCheckpointRequest}
     */
    public static final class GetCheckpointRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointRequest)
        GetCheckpointRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          GetCheckpointRequest.class.getName());
      }
      // Use GetCheckpointRequest.newBuilder() to construct.
      private GetCheckpointRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private GetCheckpointRequest() {
        tunnelId_ = "";
        clientId_ = "";
        channelId_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CLIENT_ID_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object clientId_ = "";
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      @java.lang.Override
      public boolean hasClientId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      @java.lang.Override
      public java.lang.String getClientId() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            clientId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CHANNEL_ID_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 3;</code>
       * @return Whether the channelId field is set.
       */
      @java.lang.Override
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required string channel_id = 3;</code>
       * @return The channelId.
       */
      @java.lang.Override
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            channelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string channel_id = 3;</code>
       * @return The bytes for channelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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;
  
        if (!hasTunnelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasClientId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasChannelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, clientId_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 3, channelId_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, clientId_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(3, channelId_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest) obj;
  
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (hasClientId() != other.hasClientId()) return false;
        if (hasClientId()) {
          if (!getClientId()
              .equals(other.getClientId())) return false;
        }
        if (hasChannelId() != other.hasChannelId()) return false;
        if (hasChannelId()) {
          if (!getChannelId()
              .equals(other.getChannelId())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        if (hasClientId()) {
          hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getClientId().hashCode();
        }
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.GetCheckpointRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnelId_ = "";
          clientId_ = "";
          channelId_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.clientId_ = clientId_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.channelId_ = channelId_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest.getDefaultInstance()) return this;
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasClientId()) {
            clientId_ = other.clientId_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasChannelId()) {
            channelId_ = other.channelId_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnelId()) {
            return false;
          }
          if (!hasClientId()) {
            return false;
          }
          if (!hasChannelId()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  clientId_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  channelId_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object clientId_ = "";
        /**
         * <code>required string client_id = 2;</code>
         * @return Whether the clientId field is set.
         */
        public boolean hasClientId() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The clientId.
         */
        public java.lang.String getClientId() {
          java.lang.Object ref = clientId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              clientId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The bytes for clientId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getClientIdBytes() {
          java.lang.Object ref = clientId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            clientId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearClientId() {
          clientId_ = getDefaultInstance().getClientId();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The bytes for clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private java.lang.Object channelId_ = "";
        /**
         * <code>required string channel_id = 3;</code>
         * @return Whether the channelId field is set.
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @return The channelId.
         */
        public java.lang.String getChannelId() {
          java.lang.Object ref = channelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              channelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @return The bytes for channelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getChannelIdBytes() {
          java.lang.Object ref = channelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            channelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @param value The channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearChannelId() {
          channelId_ = getDefaultInstance().getChannelId();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @param value The bytes for channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetCheckpointRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<GetCheckpointRequest>() {
        @java.lang.Override
        public GetCheckpointRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetCheckpointRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetCheckpointRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface GetCheckpointResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string checkpoint = 1;</code>
       * @return Whether the checkpoint field is set.
       */
      boolean hasCheckpoint();
      /**
       * <code>required string checkpoint = 1;</code>
       * @return The checkpoint.
       */
      java.lang.String getCheckpoint();
      /**
       * <code>required string checkpoint = 1;</code>
       * @return The bytes for checkpoint.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getCheckpointBytes();
  
      /**
       * <code>required int64 sequence_number = 2;</code>
       * @return Whether the sequenceNumber field is set.
       */
      boolean hasSequenceNumber();
      /**
       * <code>required int64 sequence_number = 2;</code>
       * @return The sequenceNumber.
       */
      long getSequenceNumber();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.GetCheckpointResponse}
     */
    public static final class GetCheckpointResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointResponse)
        GetCheckpointResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          GetCheckpointResponse.class.getName());
      }
      // Use GetCheckpointResponse.newBuilder() to construct.
      private GetCheckpointResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private GetCheckpointResponse() {
        checkpoint_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse.Builder.class);
      }
  
      private int bitField0_;
      public static final int CHECKPOINT_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object checkpoint_ = "";
      /**
       * <code>required string checkpoint = 1;</code>
       * @return Whether the checkpoint field is set.
       */
      @java.lang.Override
      public boolean hasCheckpoint() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string checkpoint = 1;</code>
       * @return The checkpoint.
       */
      @java.lang.Override
      public java.lang.String getCheckpoint() {
        java.lang.Object ref = checkpoint_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            checkpoint_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string checkpoint = 1;</code>
       * @return The bytes for checkpoint.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getCheckpointBytes() {
        java.lang.Object ref = checkpoint_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          checkpoint_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int SEQUENCE_NUMBER_FIELD_NUMBER = 2;
      private long sequenceNumber_ = 0L;
      /**
       * <code>required int64 sequence_number = 2;</code>
       * @return Whether the sequenceNumber field is set.
       */
      @java.lang.Override
      public boolean hasSequenceNumber() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required int64 sequence_number = 2;</code>
       * @return The sequenceNumber.
       */
      @java.lang.Override
      public long getSequenceNumber() {
        return sequenceNumber_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCheckpoint()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasSequenceNumber()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, checkpoint_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt64(2, sequenceNumber_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, checkpoint_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, sequenceNumber_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse) obj;
  
        if (hasCheckpoint() != other.hasCheckpoint()) return false;
        if (hasCheckpoint()) {
          if (!getCheckpoint()
              .equals(other.getCheckpoint())) return false;
        }
        if (hasSequenceNumber() != other.hasSequenceNumber()) return false;
        if (hasSequenceNumber()) {
          if (getSequenceNumber()
              != other.getSequenceNumber()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCheckpoint()) {
          hash = (37 * hash) + CHECKPOINT_FIELD_NUMBER;
          hash = (53 * hash) + getCheckpoint().hashCode();
        }
        if (hasSequenceNumber()) {
          hash = (37 * hash) + SEQUENCE_NUMBER_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getSequenceNumber());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.GetCheckpointResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          checkpoint_ = "";
          sequenceNumber_ = 0L;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.checkpoint_ = checkpoint_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.sequenceNumber_ = sequenceNumber_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse.getDefaultInstance()) return this;
          if (other.hasCheckpoint()) {
            checkpoint_ = other.checkpoint_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasSequenceNumber()) {
            setSequenceNumber(other.getSequenceNumber());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasCheckpoint()) {
            return false;
          }
          if (!hasSequenceNumber()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  checkpoint_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 16: {
                  sequenceNumber_ = input.readInt64();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object checkpoint_ = "";
        /**
         * <code>required string checkpoint = 1;</code>
         * @return Whether the checkpoint field is set.
         */
        public boolean hasCheckpoint() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string checkpoint = 1;</code>
         * @return The checkpoint.
         */
        public java.lang.String getCheckpoint() {
          java.lang.Object ref = checkpoint_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              checkpoint_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string checkpoint = 1;</code>
         * @return The bytes for checkpoint.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getCheckpointBytes() {
          java.lang.Object ref = checkpoint_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            checkpoint_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string checkpoint = 1;</code>
         * @param value The checkpoint to set.
         * @return This builder for chaining.
         */
        public Builder setCheckpoint(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          checkpoint_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string checkpoint = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearCheckpoint() {
          checkpoint_ = getDefaultInstance().getCheckpoint();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string checkpoint = 1;</code>
         * @param value The bytes for checkpoint to set.
         * @return This builder for chaining.
         */
        public Builder setCheckpointBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkpoint_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private long sequenceNumber_ ;
        /**
         * <code>required int64 sequence_number = 2;</code>
         * @return Whether the sequenceNumber field is set.
         */
        @java.lang.Override
        public boolean hasSequenceNumber() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required int64 sequence_number = 2;</code>
         * @return The sequenceNumber.
         */
        @java.lang.Override
        public long getSequenceNumber() {
          return sequenceNumber_;
        }
        /**
         * <code>required int64 sequence_number = 2;</code>
         * @param value The sequenceNumber to set.
         * @return This builder for chaining.
         */
        public Builder setSequenceNumber(long value) {
  
          sequenceNumber_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required int64 sequence_number = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearSequenceNumber() {
          bitField0_ = (bitField0_ & ~0x00000002);
          sequenceNumber_ = 0L;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.GetCheckpointResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetCheckpointResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<GetCheckpointResponse>() {
        @java.lang.Override
        public GetCheckpointResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetCheckpointResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<GetCheckpointResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.GetCheckpointResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CheckpointRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.CheckpointRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
  
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      boolean hasClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      java.lang.String getClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes();
  
      /**
       * <code>required string channel_id = 3;</code>
       * @return Whether the channelId field is set.
       */
      boolean hasChannelId();
      /**
       * <code>required string channel_id = 3;</code>
       * @return The channelId.
       */
      java.lang.String getChannelId();
      /**
       * <code>required string channel_id = 3;</code>
       * @return The bytes for channelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes();
  
      /**
       * <code>required string checkpoint = 4;</code>
       * @return Whether the checkpoint field is set.
       */
      boolean hasCheckpoint();
      /**
       * <code>required string checkpoint = 4;</code>
       * @return The checkpoint.
       */
      java.lang.String getCheckpoint();
      /**
       * <code>required string checkpoint = 4;</code>
       * @return The bytes for checkpoint.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getCheckpointBytes();
  
      /**
       * <code>required int64 sequence_number = 5;</code>
       * @return Whether the sequenceNumber field is set.
       */
      boolean hasSequenceNumber();
      /**
       * <code>required int64 sequence_number = 5;</code>
       * @return The sequenceNumber.
       */
      long getSequenceNumber();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.CheckpointRequest}
     */
    public static final class CheckpointRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.CheckpointRequest)
        CheckpointRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          CheckpointRequest.class.getName());
      }
      // Use CheckpointRequest.newBuilder() to construct.
      private CheckpointRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private CheckpointRequest() {
        tunnelId_ = "";
        clientId_ = "";
        channelId_ = "";
        checkpoint_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CLIENT_ID_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object clientId_ = "";
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      @java.lang.Override
      public boolean hasClientId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      @java.lang.Override
      public java.lang.String getClientId() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            clientId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CHANNEL_ID_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 3;</code>
       * @return Whether the channelId field is set.
       */
      @java.lang.Override
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required string channel_id = 3;</code>
       * @return The channelId.
       */
      @java.lang.Override
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            channelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string channel_id = 3;</code>
       * @return The bytes for channelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CHECKPOINT_FIELD_NUMBER = 4;
      @SuppressWarnings("serial")
      private volatile java.lang.Object checkpoint_ = "";
      /**
       * <code>required string checkpoint = 4;</code>
       * @return Whether the checkpoint field is set.
       */
      @java.lang.Override
      public boolean hasCheckpoint() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required string checkpoint = 4;</code>
       * @return The checkpoint.
       */
      @java.lang.Override
      public java.lang.String getCheckpoint() {
        java.lang.Object ref = checkpoint_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            checkpoint_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string checkpoint = 4;</code>
       * @return The bytes for checkpoint.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getCheckpointBytes() {
        java.lang.Object ref = checkpoint_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          checkpoint_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int SEQUENCE_NUMBER_FIELD_NUMBER = 5;
      private long sequenceNumber_ = 0L;
      /**
       * <code>required int64 sequence_number = 5;</code>
       * @return Whether the sequenceNumber field is set.
       */
      @java.lang.Override
      public boolean hasSequenceNumber() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required int64 sequence_number = 5;</code>
       * @return The sequenceNumber.
       */
      @java.lang.Override
      public long getSequenceNumber() {
        return sequenceNumber_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasTunnelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasClientId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasChannelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasCheckpoint()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasSequenceNumber()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, clientId_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 3, channelId_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 4, checkpoint_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeInt64(5, sequenceNumber_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, clientId_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(3, channelId_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(4, checkpoint_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(5, sequenceNumber_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest) obj;
  
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (hasClientId() != other.hasClientId()) return false;
        if (hasClientId()) {
          if (!getClientId()
              .equals(other.getClientId())) return false;
        }
        if (hasChannelId() != other.hasChannelId()) return false;
        if (hasChannelId()) {
          if (!getChannelId()
              .equals(other.getChannelId())) return false;
        }
        if (hasCheckpoint() != other.hasCheckpoint()) return false;
        if (hasCheckpoint()) {
          if (!getCheckpoint()
              .equals(other.getCheckpoint())) return false;
        }
        if (hasSequenceNumber() != other.hasSequenceNumber()) return false;
        if (hasSequenceNumber()) {
          if (getSequenceNumber()
              != other.getSequenceNumber()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        if (hasClientId()) {
          hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getClientId().hashCode();
        }
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId().hashCode();
        }
        if (hasCheckpoint()) {
          hash = (37 * hash) + CHECKPOINT_FIELD_NUMBER;
          hash = (53 * hash) + getCheckpoint().hashCode();
        }
        if (hasSequenceNumber()) {
          hash = (37 * hash) + SEQUENCE_NUMBER_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getSequenceNumber());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.CheckpointRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.CheckpointRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnelId_ = "";
          clientId_ = "";
          channelId_ = "";
          checkpoint_ = "";
          sequenceNumber_ = 0L;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.clientId_ = clientId_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.channelId_ = channelId_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.checkpoint_ = checkpoint_;
            to_bitField0_ |= 0x00000008;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.sequenceNumber_ = sequenceNumber_;
            to_bitField0_ |= 0x00000010;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest.getDefaultInstance()) return this;
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasClientId()) {
            clientId_ = other.clientId_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasChannelId()) {
            channelId_ = other.channelId_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          if (other.hasCheckpoint()) {
            checkpoint_ = other.checkpoint_;
            bitField0_ |= 0x00000008;
            onChanged();
          }
          if (other.hasSequenceNumber()) {
            setSequenceNumber(other.getSequenceNumber());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnelId()) {
            return false;
          }
          if (!hasClientId()) {
            return false;
          }
          if (!hasChannelId()) {
            return false;
          }
          if (!hasCheckpoint()) {
            return false;
          }
          if (!hasSequenceNumber()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  clientId_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  channelId_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                case 34: {
                  checkpoint_ = input.readBytes();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
                case 40: {
                  sequenceNumber_ = input.readInt64();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 40
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object clientId_ = "";
        /**
         * <code>required string client_id = 2;</code>
         * @return Whether the clientId field is set.
         */
        public boolean hasClientId() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The clientId.
         */
        public java.lang.String getClientId() {
          java.lang.Object ref = clientId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              clientId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The bytes for clientId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getClientIdBytes() {
          java.lang.Object ref = clientId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            clientId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearClientId() {
          clientId_ = getDefaultInstance().getClientId();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The bytes for clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private java.lang.Object channelId_ = "";
        /**
         * <code>required string channel_id = 3;</code>
         * @return Whether the channelId field is set.
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @return The channelId.
         */
        public java.lang.String getChannelId() {
          java.lang.Object ref = channelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              channelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @return The bytes for channelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getChannelIdBytes() {
          java.lang.Object ref = channelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            channelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @param value The channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearChannelId() {
          channelId_ = getDefaultInstance().getChannelId();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @param value The bytes for channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
  
        private java.lang.Object checkpoint_ = "";
        /**
         * <code>required string checkpoint = 4;</code>
         * @return Whether the checkpoint field is set.
         */
        public boolean hasCheckpoint() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>required string checkpoint = 4;</code>
         * @return The checkpoint.
         */
        public java.lang.String getCheckpoint() {
          java.lang.Object ref = checkpoint_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              checkpoint_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string checkpoint = 4;</code>
         * @return The bytes for checkpoint.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getCheckpointBytes() {
          java.lang.Object ref = checkpoint_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            checkpoint_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string checkpoint = 4;</code>
         * @param value The checkpoint to set.
         * @return This builder for chaining.
         */
        public Builder setCheckpoint(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          checkpoint_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <code>required string checkpoint = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearCheckpoint() {
          checkpoint_ = getDefaultInstance().getCheckpoint();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }
        /**
         * <code>required string checkpoint = 4;</code>
         * @param value The bytes for checkpoint to set.
         * @return This builder for chaining.
         */
        public Builder setCheckpointBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkpoint_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
  
        private long sequenceNumber_ ;
        /**
         * <code>required int64 sequence_number = 5;</code>
         * @return Whether the sequenceNumber field is set.
         */
        @java.lang.Override
        public boolean hasSequenceNumber() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <code>required int64 sequence_number = 5;</code>
         * @return The sequenceNumber.
         */
        @java.lang.Override
        public long getSequenceNumber() {
          return sequenceNumber_;
        }
        /**
         * <code>required int64 sequence_number = 5;</code>
         * @param value The sequenceNumber to set.
         * @return This builder for chaining.
         */
        public Builder setSequenceNumber(long value) {
  
          sequenceNumber_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
        /**
         * <code>required int64 sequence_number = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearSequenceNumber() {
          bitField0_ = (bitField0_ & ~0x00000010);
          sequenceNumber_ = 0L;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.CheckpointRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.CheckpointRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CheckpointRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<CheckpointRequest>() {
        @java.lang.Override
        public CheckpointRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CheckpointRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CheckpointRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CheckpointResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.CheckpointResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.CheckpointResponse}
     */
    public static final class CheckpointResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.CheckpointResponse)
        CheckpointResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          CheckpointResponse.class.getName());
      }
      // Use CheckpointResponse.newBuilder() to construct.
      private CheckpointResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private CheckpointResponse() {
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse.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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse) obj;
  
        if (!getUnknownFields().equals(other.getUnknownFields())) 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) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.CheckpointResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.CheckpointResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse(this);
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.CheckpointResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.CheckpointResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CheckpointResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<CheckpointResponse>() {
        @java.lang.Override
        public CheckpointResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CheckpointResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<CheckpointResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.CheckpointResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ReadRecordsRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsRequest)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      boolean hasTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      java.lang.String getTunnelId();
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes();
  
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      boolean hasClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      java.lang.String getClientId();
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes();
  
      /**
       * <code>required string channel_id = 3;</code>
       * @return Whether the channelId field is set.
       */
      boolean hasChannelId();
      /**
       * <code>required string channel_id = 3;</code>
       * @return The channelId.
       */
      java.lang.String getChannelId();
      /**
       * <code>required string channel_id = 3;</code>
       * @return The bytes for channelId.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes();
  
      /**
       * <code>required string token = 4;</code>
       * @return Whether the token field is set.
       */
      boolean hasToken();
      /**
       * <code>required string token = 4;</code>
       * @return The token.
       */
      java.lang.String getToken();
      /**
       * <code>required string token = 4;</code>
       * @return The bytes for token.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTokenBytes();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ReadRecordsRequest}
     */
    public static final class ReadRecordsRequest extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsRequest)
        ReadRecordsRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ReadRecordsRequest.class.getName());
      }
      // Use ReadRecordsRequest.newBuilder() to construct.
      private ReadRecordsRequest(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ReadRecordsRequest() {
        tunnelId_ = "";
        clientId_ = "";
        channelId_ = "";
        token_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest.Builder.class);
      }
  
      private int bitField0_;
      public static final int TUNNEL_ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object tunnelId_ = "";
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return Whether the tunnelId field is set.
       */
      @java.lang.Override
      public boolean hasTunnelId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The tunnelId.
       */
      @java.lang.Override
      public java.lang.String getTunnelId() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tunnelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tunnel_id = 1;</code>
       * @return The bytes for tunnelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTunnelIdBytes() {
        java.lang.Object ref = tunnelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tunnelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CLIENT_ID_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object clientId_ = "";
      /**
       * <code>required string client_id = 2;</code>
       * @return Whether the clientId field is set.
       */
      @java.lang.Override
      public boolean hasClientId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The clientId.
       */
      @java.lang.Override
      public java.lang.String getClientId() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            clientId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getClientIdBytes() {
        java.lang.Object ref = clientId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CHANNEL_ID_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object channelId_ = "";
      /**
       * <code>required string channel_id = 3;</code>
       * @return Whether the channelId field is set.
       */
      @java.lang.Override
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required string channel_id = 3;</code>
       * @return The channelId.
       */
      @java.lang.Override
      public java.lang.String getChannelId() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            channelId_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string channel_id = 3;</code>
       * @return The bytes for channelId.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getChannelIdBytes() {
        java.lang.Object ref = channelId_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          channelId_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TOKEN_FIELD_NUMBER = 4;
      @SuppressWarnings("serial")
      private volatile java.lang.Object token_ = "";
      /**
       * <code>required string token = 4;</code>
       * @return Whether the token field is set.
       */
      @java.lang.Override
      public boolean hasToken() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required string token = 4;</code>
       * @return The token.
       */
      @java.lang.Override
      public java.lang.String getToken() {
        java.lang.Object ref = token_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            token_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string token = 4;</code>
       * @return The bytes for token.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getTokenBytes() {
        java.lang.Object ref = token_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          token_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.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;
  
        if (!hasTunnelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasClientId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasChannelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasToken()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, clientId_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 3, channelId_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 4, token_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(1, tunnelId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, clientId_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(3, channelId_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(4, token_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest) obj;
  
        if (hasTunnelId() != other.hasTunnelId()) return false;
        if (hasTunnelId()) {
          if (!getTunnelId()
              .equals(other.getTunnelId())) return false;
        }
        if (hasClientId() != other.hasClientId()) return false;
        if (hasClientId()) {
          if (!getClientId()
              .equals(other.getClientId())) return false;
        }
        if (hasChannelId() != other.hasChannelId()) return false;
        if (hasChannelId()) {
          if (!getChannelId()
              .equals(other.getChannelId())) return false;
        }
        if (hasToken() != other.hasToken()) return false;
        if (hasToken()) {
          if (!getToken()
              .equals(other.getToken())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTunnelId()) {
          hash = (37 * hash) + TUNNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTunnelId().hashCode();
        }
        if (hasClientId()) {
          hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getClientId().hashCode();
        }
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId().hashCode();
        }
        if (hasToken()) {
          hash = (37 * hash) + TOKEN_FIELD_NUMBER;
          hash = (53 * hash) + getToken().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ReadRecordsRequest}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsRequest)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequestOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          tunnelId_ = "";
          clientId_ = "";
          channelId_ = "";
          token_ = "";
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.tunnelId_ = tunnelId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.clientId_ = clientId_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.channelId_ = channelId_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.token_ = token_;
            to_bitField0_ |= 0x00000008;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest.getDefaultInstance()) return this;
          if (other.hasTunnelId()) {
            tunnelId_ = other.tunnelId_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasClientId()) {
            clientId_ = other.clientId_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasChannelId()) {
            channelId_ = other.channelId_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          if (other.hasToken()) {
            token_ = other.token_;
            bitField0_ |= 0x00000008;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTunnelId()) {
            return false;
          }
          if (!hasClientId()) {
            return false;
          }
          if (!hasChannelId()) {
            return false;
          }
          if (!hasToken()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tunnelId_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  clientId_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  channelId_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                case 34: {
                  token_ = input.readBytes();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object tunnelId_ = "";
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return Whether the tunnelId field is set.
         */
        public boolean hasTunnelId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The tunnelId.
         */
        public java.lang.String getTunnelId() {
          java.lang.Object ref = tunnelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tunnelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return The bytes for tunnelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTunnelIdBytes() {
          java.lang.Object ref = tunnelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tunnelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTunnelId() {
          tunnelId_ = getDefaultInstance().getTunnelId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string tunnel_id = 1;</code>
         * @param value The bytes for tunnelId to set.
         * @return This builder for chaining.
         */
        public Builder setTunnelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          tunnelId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
  
        private java.lang.Object clientId_ = "";
        /**
         * <code>required string client_id = 2;</code>
         * @return Whether the clientId field is set.
         */
        public boolean hasClientId() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The clientId.
         */
        public java.lang.String getClientId() {
          java.lang.Object ref = clientId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              clientId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return The bytes for clientId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getClientIdBytes() {
          java.lang.Object ref = clientId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            clientId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearClientId() {
          clientId_ = getDefaultInstance().getClientId();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string client_id = 2;</code>
         * @param value The bytes for clientId to set.
         * @return This builder for chaining.
         */
        public Builder setClientIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          clientId_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private java.lang.Object channelId_ = "";
        /**
         * <code>required string channel_id = 3;</code>
         * @return Whether the channelId field is set.
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @return The channelId.
         */
        public java.lang.String getChannelId() {
          java.lang.Object ref = channelId_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              channelId_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @return The bytes for channelId.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getChannelIdBytes() {
          java.lang.Object ref = channelId_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            channelId_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @param value The channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearChannelId() {
          channelId_ = getDefaultInstance().getChannelId();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <code>required string channel_id = 3;</code>
         * @param value The bytes for channelId to set.
         * @return This builder for chaining.
         */
        public Builder setChannelIdBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          channelId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
  
        private java.lang.Object token_ = "";
        /**
         * <code>required string token = 4;</code>
         * @return Whether the token field is set.
         */
        public boolean hasToken() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>required string token = 4;</code>
         * @return The token.
         */
        public java.lang.String getToken() {
          java.lang.Object ref = token_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              token_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string token = 4;</code>
         * @return The bytes for token.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getTokenBytes() {
          java.lang.Object ref = token_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            token_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string token = 4;</code>
         * @param value The token to set.
         * @return This builder for chaining.
         */
        public Builder setToken(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          token_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <code>required string token = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearToken() {
          token_ = getDefaultInstance().getToken();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }
        /**
         * <code>required string token = 4;</code>
         * @param value The bytes for token to set.
         * @return This builder for chaining.
         */
        public Builder setTokenBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          token_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsRequest)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsRequest)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ReadRecordsRequest>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ReadRecordsRequest>() {
        @java.lang.Override
        public ReadRecordsRequest parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ReadRecordsRequest> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ReadRecordsRequest> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface RecordOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.Record)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.ActionType action_type = 1;</code>
       * @return Whether the actionType field is set.
       */
      boolean hasActionType();
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.ActionType action_type = 1;</code>
       * @return The actionType.
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType getActionType();
  
      /**
       * <code>required bytes record = 2;</code>
       * @return Whether the record field is set.
       */
      boolean hasRecord();
      /**
       * <code>required bytes record = 2;</code>
       * @return The record.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getRecord();
  
      /**
       * <code>optional bytes origin_record = 3;</code>
       * @return Whether the originRecord field is set.
       */
      boolean hasOriginRecord();
      /**
       * <code>optional bytes origin_record = 3;</code>
       * @return The originRecord.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getOriginRecord();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Record}
     */
    public static final class Record extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.Record)
        RecordOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          Record.class.getName());
      }
      // Use Record.newBuilder() to construct.
      private Record(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private Record() {
        actionType_ = 1;
        record_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        originRecord_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder.class);
      }
  
      private int bitField0_;
      public static final int ACTION_TYPE_FIELD_NUMBER = 1;
      private int actionType_ = 1;
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.ActionType action_type = 1;</code>
       * @return Whether the actionType field is set.
       */
      @java.lang.Override public boolean hasActionType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .com.alicloud.openservices.tablestore.core.protocol.ActionType action_type = 1;</code>
       * @return The actionType.
       */
      @java.lang.Override public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType getActionType() {
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType result = com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType.forNumber(actionType_);
        return result == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType.PUT_ROW : result;
      }
  
      public static final int RECORD_FIELD_NUMBER = 2;
      private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString record_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes record = 2;</code>
       * @return Whether the record field is set.
       */
      @java.lang.Override
      public boolean hasRecord() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required bytes record = 2;</code>
       * @return The record.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getRecord() {
        return record_;
      }
  
      public static final int ORIGIN_RECORD_FIELD_NUMBER = 3;
      private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString originRecord_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes origin_record = 3;</code>
       * @return Whether the originRecord field is set.
       */
      @java.lang.Override
      public boolean hasOriginRecord() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional bytes origin_record = 3;</code>
       * @return The originRecord.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getOriginRecord() {
        return originRecord_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasActionType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasRecord()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeEnum(1, actionType_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeBytes(2, record_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeBytes(3, originRecord_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, actionType_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, record_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, originRecord_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record) obj;
  
        if (hasActionType() != other.hasActionType()) return false;
        if (hasActionType()) {
          if (actionType_ != other.actionType_) return false;
        }
        if (hasRecord() != other.hasRecord()) return false;
        if (hasRecord()) {
          if (!getRecord()
              .equals(other.getRecord())) return false;
        }
        if (hasOriginRecord() != other.hasOriginRecord()) return false;
        if (hasOriginRecord()) {
          if (!getOriginRecord()
              .equals(other.getOriginRecord())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasActionType()) {
          hash = (37 * hash) + ACTION_TYPE_FIELD_NUMBER;
          hash = (53 * hash) + actionType_;
        }
        if (hasRecord()) {
          hash = (37 * hash) + RECORD_FIELD_NUMBER;
          hash = (53 * hash) + getRecord().hashCode();
        }
        if (hasOriginRecord()) {
          hash = (37 * hash) + ORIGIN_RECORD_FIELD_NUMBER;
          hash = (53 * hash) + getOriginRecord().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Record}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.Record)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          actionType_ = 1;
          record_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
          originRecord_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.actionType_ = actionType_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.record_ = record_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.originRecord_ = originRecord_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.getDefaultInstance()) return this;
          if (other.hasActionType()) {
            setActionType(other.getActionType());
          }
          if (other.hasRecord()) {
            setRecord(other.getRecord());
          }
          if (other.hasOriginRecord()) {
            setOriginRecord(other.getOriginRecord());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasActionType()) {
            return false;
          }
          if (!hasRecord()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  int tmpRaw = input.readEnum();
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType tmpValue =
                      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType.forNumber(tmpRaw);
                  if (tmpValue == null) {
                    mergeUnknownVarintField(1, tmpRaw);
                  } else {
                    actionType_ = tmpRaw;
                    bitField0_ |= 0x00000001;
                  }
                  break;
                } // case 8
                case 18: {
                  record_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  originRecord_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private int actionType_ = 1;
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.ActionType action_type = 1;</code>
         * @return Whether the actionType field is set.
         */
        @java.lang.Override public boolean hasActionType() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.ActionType action_type = 1;</code>
         * @return The actionType.
         */
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType getActionType() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType result = com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType.forNumber(actionType_);
          return result == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType.PUT_ROW : result;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.ActionType action_type = 1;</code>
         * @param value The actionType to set.
         * @return This builder for chaining.
         */
        public Builder setActionType(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ActionType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          actionType_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .com.alicloud.openservices.tablestore.core.protocol.ActionType action_type = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearActionType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          actionType_ = 1;
          onChanged();
          return this;
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString record_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>required bytes record = 2;</code>
         * @return Whether the record field is set.
         */
        @java.lang.Override
        public boolean hasRecord() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required bytes record = 2;</code>
         * @return The record.
         */
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getRecord() {
          return record_;
        }
        /**
         * <code>required bytes record = 2;</code>
         * @param value The record to set.
         * @return This builder for chaining.
         */
        public Builder setRecord(com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          record_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required bytes record = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearRecord() {
          bitField0_ = (bitField0_ & ~0x00000002);
          record_ = getDefaultInstance().getRecord();
          onChanged();
          return this;
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString originRecord_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes origin_record = 3;</code>
         * @return Whether the originRecord field is set.
         */
        @java.lang.Override
        public boolean hasOriginRecord() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional bytes origin_record = 3;</code>
         * @return The originRecord.
         */
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getOriginRecord() {
          return originRecord_;
        }
        /**
         * <code>optional bytes origin_record = 3;</code>
         * @param value The originRecord to set.
         * @return This builder for chaining.
         */
        public Builder setOriginRecord(com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          originRecord_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes origin_record = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearOriginRecord() {
          bitField0_ = (bitField0_ & ~0x00000004);
          originRecord_ = getDefaultInstance().getOriginRecord();
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.Record)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.Record)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Record>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<Record>() {
        @java.lang.Override
        public Record parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Record> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Record> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ReadRecordsResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsResponse)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record> 
          getRecordsList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record getRecords(int index);
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      int getRecordsCount();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder> 
          getRecordsOrBuilderList();
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder getRecordsOrBuilder(
          int index);
  
      /**
       * <code>required string next_token = 2;</code>
       * @return Whether the nextToken field is set.
       */
      boolean hasNextToken();
      /**
       * <code>required string next_token = 2;</code>
       * @return The nextToken.
       */
      java.lang.String getNextToken();
      /**
       * <code>required string next_token = 2;</code>
       * @return The bytes for nextToken.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getNextTokenBytes();
  
      /**
       * <code>optional bool may_more_record = 3;</code>
       * @return Whether the mayMoreRecord field is set.
       */
      boolean hasMayMoreRecord();
      /**
       * <code>optional bool may_more_record = 3;</code>
       * @return The mayMoreRecord.
       */
      boolean getMayMoreRecord();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ReadRecordsResponse}
     */
    public static final class ReadRecordsResponse extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsResponse)
        ReadRecordsResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          ReadRecordsResponse.class.getName());
      }
      // Use ReadRecordsResponse.newBuilder() to construct.
      private ReadRecordsResponse(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private ReadRecordsResponse() {
        records_ = java.util.Collections.emptyList();
        nextToken_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse.Builder.class);
      }
  
      private int bitField0_;
      public static final int RECORDS_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record> records_;
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      @java.lang.Override
      public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record> getRecordsList() {
        return records_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder> 
          getRecordsOrBuilderList() {
        return records_;
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      @java.lang.Override
      public int getRecordsCount() {
        return records_.size();
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record getRecords(int index) {
        return records_.get(index);
      }
      /**
       * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
       */
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder getRecordsOrBuilder(
          int index) {
        return records_.get(index);
      }
  
      public static final int NEXT_TOKEN_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object nextToken_ = "";
      /**
       * <code>required string next_token = 2;</code>
       * @return Whether the nextToken field is set.
       */
      @java.lang.Override
      public boolean hasNextToken() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string next_token = 2;</code>
       * @return The nextToken.
       */
      @java.lang.Override
      public java.lang.String getNextToken() {
        java.lang.Object ref = nextToken_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            nextToken_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string next_token = 2;</code>
       * @return The bytes for nextToken.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getNextTokenBytes() {
        java.lang.Object ref = nextToken_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nextToken_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int MAY_MORE_RECORD_FIELD_NUMBER = 3;
      private boolean mayMoreRecord_ = false;
      /**
       * <code>optional bool may_more_record = 3;</code>
       * @return Whether the mayMoreRecord field is set.
       */
      @java.lang.Override
      public boolean hasMayMoreRecord() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional bool may_more_record = 3;</code>
       * @return The mayMoreRecord.
       */
      @java.lang.Override
      public boolean getMayMoreRecord() {
        return mayMoreRecord_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasNextToken()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getRecordsCount(); i++) {
          if (!getRecords(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < records_.size(); i++) {
          output.writeMessage(1, records_.get(i));
        }
        if (((bitField0_ & 0x00000001) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, nextToken_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeBool(3, mayMoreRecord_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        for (int i = 0; i < records_.size(); i++) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, records_.get(i));
        }
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, nextToken_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, mayMoreRecord_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse) obj;
  
        if (!getRecordsList()
            .equals(other.getRecordsList())) return false;
        if (hasNextToken() != other.hasNextToken()) return false;
        if (hasNextToken()) {
          if (!getNextToken()
              .equals(other.getNextToken())) return false;
        }
        if (hasMayMoreRecord() != other.hasMayMoreRecord()) return false;
        if (hasMayMoreRecord()) {
          if (getMayMoreRecord()
              != other.getMayMoreRecord()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getRecordsCount() > 0) {
          hash = (37 * hash) + RECORDS_FIELD_NUMBER;
          hash = (53 * hash) + getRecordsList().hashCode();
        }
        if (hasNextToken()) {
          hash = (37 * hash) + NEXT_TOKEN_FIELD_NUMBER;
          hash = (53 * hash) + getNextToken().hashCode();
        }
        if (hasMayMoreRecord()) {
          hash = (37 * hash) + MAY_MORE_RECORD_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashBoolean(
              getMayMoreRecord());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.ReadRecordsResponse}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsResponse)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponseOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (recordsBuilder_ == null) {
            records_ = java.util.Collections.emptyList();
          } else {
            records_ = null;
            recordsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          nextToken_ = "";
          mayMoreRecord_ = false;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartialRepeatedFields(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse result) {
          if (recordsBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              records_ = java.util.Collections.unmodifiableList(records_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.records_ = records_;
          } else {
            result.records_ = recordsBuilder_.build();
          }
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.nextToken_ = nextToken_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.mayMoreRecord_ = mayMoreRecord_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse.getDefaultInstance()) return this;
          if (recordsBuilder_ == null) {
            if (!other.records_.isEmpty()) {
              if (records_.isEmpty()) {
                records_ = other.records_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureRecordsIsMutable();
                records_.addAll(other.records_);
              }
              onChanged();
            }
          } else {
            if (!other.records_.isEmpty()) {
              if (recordsBuilder_.isEmpty()) {
                recordsBuilder_.dispose();
                recordsBuilder_ = null;
                records_ = other.records_;
                bitField0_ = (bitField0_ & ~0x00000001);
                recordsBuilder_ = 
                  com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getRecordsFieldBuilder() : null;
              } else {
                recordsBuilder_.addAllMessages(other.records_);
              }
            }
          }
          if (other.hasNextToken()) {
            nextToken_ = other.nextToken_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasMayMoreRecord()) {
            setMayMoreRecord(other.getMayMoreRecord());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasNextToken()) {
            return false;
          }
          for (int i = 0; i < getRecordsCount(); i++) {
            if (!getRecords(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record m =
                      input.readMessage(
                          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.parser(),
                          extensionRegistry);
                  if (recordsBuilder_ == null) {
                    ensureRecordsIsMutable();
                    records_.add(m);
                  } else {
                    recordsBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
                case 18: {
                  nextToken_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 24: {
                  mayMoreRecord_ = input.readBool();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record> records_ =
          java.util.Collections.emptyList();
        private void ensureRecordsIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            records_ = new java.util.ArrayList<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record>(records_);
            bitField0_ |= 0x00000001;
           }
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder> recordsBuilder_;
  
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record> getRecordsList() {
          if (recordsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(records_);
          } else {
            return recordsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public int getRecordsCount() {
          if (recordsBuilder_ == null) {
            return records_.size();
          } else {
            return recordsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record getRecords(int index) {
          if (recordsBuilder_ == null) {
            return records_.get(index);
          } else {
            return recordsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public Builder setRecords(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record value) {
          if (recordsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRecordsIsMutable();
            records_.set(index, value);
            onChanged();
          } else {
            recordsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public Builder setRecords(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder builderForValue) {
          if (recordsBuilder_ == null) {
            ensureRecordsIsMutable();
            records_.set(index, builderForValue.build());
            onChanged();
          } else {
            recordsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public Builder addRecords(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record value) {
          if (recordsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRecordsIsMutable();
            records_.add(value);
            onChanged();
          } else {
            recordsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public Builder addRecords(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record value) {
          if (recordsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRecordsIsMutable();
            records_.add(index, value);
            onChanged();
          } else {
            recordsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public Builder addRecords(
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder builderForValue) {
          if (recordsBuilder_ == null) {
            ensureRecordsIsMutable();
            records_.add(builderForValue.build());
            onChanged();
          } else {
            recordsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public Builder addRecords(
            int index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder builderForValue) {
          if (recordsBuilder_ == null) {
            ensureRecordsIsMutable();
            records_.add(index, builderForValue.build());
            onChanged();
          } else {
            recordsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public Builder addAllRecords(
            java.lang.Iterable<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record> values) {
          if (recordsBuilder_ == null) {
            ensureRecordsIsMutable();
            com.aliyun.ots.thirdparty.com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, records_);
            onChanged();
          } else {
            recordsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public Builder clearRecords() {
          if (recordsBuilder_ == null) {
            records_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            recordsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public Builder removeRecords(int index) {
          if (recordsBuilder_ == null) {
            ensureRecordsIsMutable();
            records_.remove(index);
            onChanged();
          } else {
            recordsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder getRecordsBuilder(
            int index) {
          return getRecordsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder getRecordsOrBuilder(
            int index) {
          if (recordsBuilder_ == null) {
            return records_.get(index);  } else {
            return recordsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public java.util.List<? extends com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder> 
             getRecordsOrBuilderList() {
          if (recordsBuilder_ != null) {
            return recordsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(records_);
          }
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder addRecordsBuilder() {
          return getRecordsFieldBuilder().addBuilder(
              com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder addRecordsBuilder(
            int index) {
          return getRecordsFieldBuilder().addBuilder(
              index, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.getDefaultInstance());
        }
        /**
         * <code>repeated .com.alicloud.openservices.tablestore.core.protocol.Record records = 1;</code>
         */
        public java.util.List<com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder> 
             getRecordsBuilderList() {
          return getRecordsFieldBuilder().getBuilderList();
        }
        private com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
            com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder> 
            getRecordsFieldBuilder() {
          if (recordsBuilder_ == null) {
            recordsBuilder_ = new com.aliyun.ots.thirdparty.com.google.protobuf.RepeatedFieldBuilder<
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Record.Builder, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.RecordOrBuilder>(
                    records_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            records_ = null;
          }
          return recordsBuilder_;
        }
  
        private java.lang.Object nextToken_ = "";
        /**
         * <code>required string next_token = 2;</code>
         * @return Whether the nextToken field is set.
         */
        public boolean hasNextToken() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string next_token = 2;</code>
         * @return The nextToken.
         */
        public java.lang.String getNextToken() {
          java.lang.Object ref = nextToken_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              nextToken_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string next_token = 2;</code>
         * @return The bytes for nextToken.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getNextTokenBytes() {
          java.lang.Object ref = nextToken_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            nextToken_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string next_token = 2;</code>
         * @param value The nextToken to set.
         * @return This builder for chaining.
         */
        public Builder setNextToken(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          nextToken_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required string next_token = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearNextToken() {
          nextToken_ = getDefaultInstance().getNextToken();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>required string next_token = 2;</code>
         * @param value The bytes for nextToken to set.
         * @return This builder for chaining.
         */
        public Builder setNextTokenBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          nextToken_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private boolean mayMoreRecord_ ;
        /**
         * <code>optional bool may_more_record = 3;</code>
         * @return Whether the mayMoreRecord field is set.
         */
        @java.lang.Override
        public boolean hasMayMoreRecord() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional bool may_more_record = 3;</code>
         * @return The mayMoreRecord.
         */
        @java.lang.Override
        public boolean getMayMoreRecord() {
          return mayMoreRecord_;
        }
        /**
         * <code>optional bool may_more_record = 3;</code>
         * @param value The mayMoreRecord to set.
         * @return This builder for chaining.
         */
        public Builder setMayMoreRecord(boolean value) {
  
          mayMoreRecord_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool may_more_record = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearMayMoreRecord() {
          bitField0_ = (bitField0_ & ~0x00000004);
          mayMoreRecord_ = false;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsResponse)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.ReadRecordsResponse)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ReadRecordsResponse>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<ReadRecordsResponse>() {
        @java.lang.Override
        public ReadRecordsResponse parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ReadRecordsResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<ReadRecordsResponse> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.ReadRecordsResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface TokenOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.Token)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required int64 version = 1;</code>
       * @return Whether the version field is set.
       */
      boolean hasVersion();
      /**
       * <code>required int64 version = 1;</code>
       * @return The version.
       */
      long getVersion();
  
      /**
       * <code>required bytes content = 2;</code>
       * @return Whether the content field is set.
       */
      boolean hasContent();
      /**
       * <code>required bytes content = 2;</code>
       * @return The content.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getContent();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Token}
     */
    public static final class Token extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.Token)
        TokenOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          Token.class.getName());
      }
      // Use Token.newBuilder() to construct.
      private Token(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private Token() {
        content_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token.Builder.class);
      }
  
      private int bitField0_;
      public static final int VERSION_FIELD_NUMBER = 1;
      private long version_ = 0L;
      /**
       * <code>required int64 version = 1;</code>
       * @return Whether the version field is set.
       */
      @java.lang.Override
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int64 version = 1;</code>
       * @return The version.
       */
      @java.lang.Override
      public long getVersion() {
        return version_;
      }
  
      public static final int CONTENT_FIELD_NUMBER = 2;
      private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString content_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes content = 2;</code>
       * @return Whether the content field is set.
       */
      @java.lang.Override
      public boolean hasContent() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required bytes content = 2;</code>
       * @return The content.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.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;
  
        if (!hasVersion()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasContent()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt64(1, version_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeBytes(2, content_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(1, version_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, content_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token) obj;
  
        if (hasVersion() != other.hasVersion()) return false;
        if (hasVersion()) {
          if (getVersion()
              != other.getVersion()) return false;
        }
        if (hasContent() != other.hasContent()) return false;
        if (hasContent()) {
          if (!getContent()
              .equals(other.getContent())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasVersion()) {
          hash = (37 * hash) + VERSION_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getVersion());
        }
        if (hasContent()) {
          hash = (37 * hash) + CONTENT_FIELD_NUMBER;
          hash = (53 * hash) + getContent().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.Token}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.Token)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          version_ = 0L;
          content_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.version_ = version_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.content_ = content_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token.getDefaultInstance()) return this;
          if (other.hasVersion()) {
            setVersion(other.getVersion());
          }
          if (other.hasContent()) {
            setContent(other.getContent());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasVersion()) {
            return false;
          }
          if (!hasContent()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  version_ = input.readInt64();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 18: {
                  content_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private long version_ ;
        /**
         * <code>required int64 version = 1;</code>
         * @return Whether the version field is set.
         */
        @java.lang.Override
        public boolean hasVersion() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required int64 version = 1;</code>
         * @return The version.
         */
        @java.lang.Override
        public long getVersion() {
          return version_;
        }
        /**
         * <code>required int64 version = 1;</code>
         * @param value The version to set.
         * @return This builder for chaining.
         */
        public Builder setVersion(long value) {
  
          version_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required int64 version = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearVersion() {
          bitField0_ = (bitField0_ & ~0x00000001);
          version_ = 0L;
          onChanged();
          return this;
        }
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString content_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>required bytes content = 2;</code>
         * @return Whether the content field is set.
         */
        @java.lang.Override
        public boolean hasContent() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required bytes content = 2;</code>
         * @return The content.
         */
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getContent() {
          return content_;
        }
        /**
         * <code>required bytes content = 2;</code>
         * @param value The content to set.
         * @return This builder for chaining.
         */
        public Builder setContent(com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          content_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>required bytes content = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearContent() {
          bitField0_ = (bitField0_ & ~0x00000002);
          content_ = getDefaultInstance().getContent();
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.Token)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.Token)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Token>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<Token>() {
        @java.lang.Override
        public Token parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Token> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<Token> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.Token getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface TokenContentOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.TokenContent)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional bytes primary_key = 1;</code>
       * @return Whether the primaryKey field is set.
       */
      boolean hasPrimaryKey();
      /**
       * <code>optional bytes primary_key = 1;</code>
       * @return The primaryKey.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getPrimaryKey();
  
      /**
       * <code>optional string iterator = 2;</code>
       * @return Whether the iterator field is set.
       */
      boolean hasIterator();
      /**
       * <code>optional string iterator = 2;</code>
       * @return The iterator.
       */
      java.lang.String getIterator();
      /**
       * <code>optional string iterator = 2;</code>
       * @return The bytes for iterator.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getIteratorBytes();
  
      /**
       * <code>optional int64 timestamp = 3;</code>
       * @return Whether the timestamp field is set.
       */
      boolean hasTimestamp();
      /**
       * <code>optional int64 timestamp = 3;</code>
       * @return The timestamp.
       */
      long getTimestamp();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.TokenContent}
     */
    public static final class TokenContent extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.TokenContent)
        TokenContentOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          TokenContent.class.getName());
      }
      // Use TokenContent.newBuilder() to construct.
      private TokenContent(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private TokenContent() {
        primaryKey_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        iterator_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent.Builder.class);
      }
  
      private int bitField0_;
      public static final int PRIMARY_KEY_FIELD_NUMBER = 1;
      private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString primaryKey_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes primary_key = 1;</code>
       * @return Whether the primaryKey field is set.
       */
      @java.lang.Override
      public boolean hasPrimaryKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional bytes primary_key = 1;</code>
       * @return The primaryKey.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getPrimaryKey() {
        return primaryKey_;
      }
  
      public static final int ITERATOR_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object iterator_ = "";
      /**
       * <code>optional string iterator = 2;</code>
       * @return Whether the iterator field is set.
       */
      @java.lang.Override
      public boolean hasIterator() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string iterator = 2;</code>
       * @return The iterator.
       */
      @java.lang.Override
      public java.lang.String getIterator() {
        java.lang.Object ref = iterator_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            iterator_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string iterator = 2;</code>
       * @return The bytes for iterator.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getIteratorBytes() {
        java.lang.Object ref = iterator_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          iterator_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TIMESTAMP_FIELD_NUMBER = 3;
      private long timestamp_ = 0L;
      /**
       * <code>optional int64 timestamp = 3;</code>
       * @return Whether the timestamp field is set.
       */
      @java.lang.Override
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional int64 timestamp = 3;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
  
      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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeBytes(1, primaryKey_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, iterator_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeInt64(3, timestamp_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, primaryKey_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, iterator_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(3, timestamp_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent) obj;
  
        if (hasPrimaryKey() != other.hasPrimaryKey()) return false;
        if (hasPrimaryKey()) {
          if (!getPrimaryKey()
              .equals(other.getPrimaryKey())) return false;
        }
        if (hasIterator() != other.hasIterator()) return false;
        if (hasIterator()) {
          if (!getIterator()
              .equals(other.getIterator())) return false;
        }
        if (hasTimestamp() != other.hasTimestamp()) return false;
        if (hasTimestamp()) {
          if (getTimestamp()
              != other.getTimestamp()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasPrimaryKey()) {
          hash = (37 * hash) + PRIMARY_KEY_FIELD_NUMBER;
          hash = (53 * hash) + getPrimaryKey().hashCode();
        }
        if (hasIterator()) {
          hash = (37 * hash) + ITERATOR_FIELD_NUMBER;
          hash = (53 * hash) + getIterator().hashCode();
        }
        if (hasTimestamp()) {
          hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getTimestamp());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.TokenContent}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.TokenContent)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          primaryKey_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
          iterator_ = "";
          timestamp_ = 0L;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.primaryKey_ = primaryKey_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.iterator_ = iterator_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.timestamp_ = timestamp_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent.getDefaultInstance()) return this;
          if (other.hasPrimaryKey()) {
            setPrimaryKey(other.getPrimaryKey());
          }
          if (other.hasIterator()) {
            iterator_ = other.iterator_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasTimestamp()) {
            setTimestamp(other.getTimestamp());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  primaryKey_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  iterator_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 24: {
                  timestamp_ = input.readInt64();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString primaryKey_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes primary_key = 1;</code>
         * @return Whether the primaryKey field is set.
         */
        @java.lang.Override
        public boolean hasPrimaryKey() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional bytes primary_key = 1;</code>
         * @return The primaryKey.
         */
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getPrimaryKey() {
          return primaryKey_;
        }
        /**
         * <code>optional bytes primary_key = 1;</code>
         * @param value The primaryKey to set.
         * @return This builder for chaining.
         */
        public Builder setPrimaryKey(com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          primaryKey_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes primary_key = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearPrimaryKey() {
          bitField0_ = (bitField0_ & ~0x00000001);
          primaryKey_ = getDefaultInstance().getPrimaryKey();
          onChanged();
          return this;
        }
  
        private java.lang.Object iterator_ = "";
        /**
         * <code>optional string iterator = 2;</code>
         * @return Whether the iterator field is set.
         */
        public boolean hasIterator() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @return The iterator.
         */
        public java.lang.String getIterator() {
          java.lang.Object ref = iterator_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              iterator_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @return The bytes for iterator.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getIteratorBytes() {
          java.lang.Object ref = iterator_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            iterator_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @param value The iterator to set.
         * @return This builder for chaining.
         */
        public Builder setIterator(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          iterator_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearIterator() {
          iterator_ = getDefaultInstance().getIterator();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @param value The bytes for iterator to set.
         * @return This builder for chaining.
         */
        public Builder setIteratorBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          iterator_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private long timestamp_ ;
        /**
         * <code>optional int64 timestamp = 3;</code>
         * @return Whether the timestamp field is set.
         */
        @java.lang.Override
        public boolean hasTimestamp() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional int64 timestamp = 3;</code>
         * @return The timestamp.
         */
        @java.lang.Override
        public long getTimestamp() {
          return timestamp_;
        }
        /**
         * <code>optional int64 timestamp = 3;</code>
         * @param value The timestamp to set.
         * @return This builder for chaining.
         */
        public Builder setTimestamp(long value) {
  
          timestamp_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 timestamp = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTimestamp() {
          bitField0_ = (bitField0_ & ~0x00000004);
          timestamp_ = 0L;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.TokenContent)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.TokenContent)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<TokenContent>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<TokenContent>() {
        @java.lang.Override
        public TokenContent parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<TokenContent> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<TokenContent> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContent getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface TokenContentV2OrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.TokenContentV2)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional bytes primary_key = 1;</code>
       * @return Whether the primaryKey field is set.
       */
      boolean hasPrimaryKey();
      /**
       * <code>optional bytes primary_key = 1;</code>
       * @return The primaryKey.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getPrimaryKey();
  
      /**
       * <code>optional string iterator = 2;</code>
       * @return Whether the iterator field is set.
       */
      boolean hasIterator();
      /**
       * <code>optional string iterator = 2;</code>
       * @return The iterator.
       */
      java.lang.String getIterator();
      /**
       * <code>optional string iterator = 2;</code>
       * @return The bytes for iterator.
       */
      com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getIteratorBytes();
  
      /**
       * <code>optional int64 timestamp = 3;</code>
       * @return Whether the timestamp field is set.
       */
      boolean hasTimestamp();
      /**
       * <code>optional int64 timestamp = 3;</code>
       * @return The timestamp.
       */
      long getTimestamp();
  
      /**
       * <code>optional int64 total_count = 4;</code>
       * @return Whether the totalCount field is set.
       */
      boolean hasTotalCount();
      /**
       * <code>optional int64 total_count = 4;</code>
       * @return The totalCount.
       */
      long getTotalCount();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.TokenContentV2}
     */
    public static final class TokenContentV2 extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.TokenContentV2)
        TokenContentV2OrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          TokenContentV2.class.getName());
      }
      // Use TokenContentV2.newBuilder() to construct.
      private TokenContentV2(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private TokenContentV2() {
        primaryKey_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        iterator_ = "";
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2.Builder.class);
      }
  
      private int bitField0_;
      public static final int PRIMARY_KEY_FIELD_NUMBER = 1;
      private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString primaryKey_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes primary_key = 1;</code>
       * @return Whether the primaryKey field is set.
       */
      @java.lang.Override
      public boolean hasPrimaryKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional bytes primary_key = 1;</code>
       * @return The primaryKey.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getPrimaryKey() {
        return primaryKey_;
      }
  
      public static final int ITERATOR_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object iterator_ = "";
      /**
       * <code>optional string iterator = 2;</code>
       * @return Whether the iterator field is set.
       */
      @java.lang.Override
      public boolean hasIterator() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string iterator = 2;</code>
       * @return The iterator.
       */
      @java.lang.Override
      public java.lang.String getIterator() {
        java.lang.Object ref = iterator_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs = 
              (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            iterator_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string iterator = 2;</code>
       * @return The bytes for iterator.
       */
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
          getIteratorBytes() {
        java.lang.Object ref = iterator_;
        if (ref instanceof java.lang.String) {
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
              com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          iterator_ = b;
          return b;
        } else {
          return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TIMESTAMP_FIELD_NUMBER = 3;
      private long timestamp_ = 0L;
      /**
       * <code>optional int64 timestamp = 3;</code>
       * @return Whether the timestamp field is set.
       */
      @java.lang.Override
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional int64 timestamp = 3;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
  
      public static final int TOTAL_COUNT_FIELD_NUMBER = 4;
      private long totalCount_ = 0L;
      /**
       * <code>optional int64 total_count = 4;</code>
       * @return Whether the totalCount field is set.
       */
      @java.lang.Override
      public boolean hasTotalCount() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional int64 total_count = 4;</code>
       * @return The totalCount.
       */
      @java.lang.Override
      public long getTotalCount() {
        return totalCount_;
      }
  
      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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeBytes(1, primaryKey_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.writeString(output, 2, iterator_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeInt64(3, timestamp_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeInt64(4, totalCount_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, primaryKey_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.computeStringSize(2, iterator_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(3, timestamp_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeInt64Size(4, totalCount_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2) obj;
  
        if (hasPrimaryKey() != other.hasPrimaryKey()) return false;
        if (hasPrimaryKey()) {
          if (!getPrimaryKey()
              .equals(other.getPrimaryKey())) return false;
        }
        if (hasIterator() != other.hasIterator()) return false;
        if (hasIterator()) {
          if (!getIterator()
              .equals(other.getIterator())) return false;
        }
        if (hasTimestamp() != other.hasTimestamp()) return false;
        if (hasTimestamp()) {
          if (getTimestamp()
              != other.getTimestamp()) return false;
        }
        if (hasTotalCount() != other.hasTotalCount()) return false;
        if (hasTotalCount()) {
          if (getTotalCount()
              != other.getTotalCount()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasPrimaryKey()) {
          hash = (37 * hash) + PRIMARY_KEY_FIELD_NUMBER;
          hash = (53 * hash) + getPrimaryKey().hashCode();
        }
        if (hasIterator()) {
          hash = (37 * hash) + ITERATOR_FIELD_NUMBER;
          hash = (53 * hash) + getIterator().hashCode();
        }
        if (hasTimestamp()) {
          hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getTimestamp());
        }
        if (hasTotalCount()) {
          hash = (37 * hash) + TOTAL_COUNT_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getTotalCount());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.TokenContentV2}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.TokenContentV2)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2OrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          primaryKey_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
          iterator_ = "";
          timestamp_ = 0L;
          totalCount_ = 0L;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.primaryKey_ = primaryKey_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.iterator_ = iterator_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.timestamp_ = timestamp_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.totalCount_ = totalCount_;
            to_bitField0_ |= 0x00000008;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2.getDefaultInstance()) return this;
          if (other.hasPrimaryKey()) {
            setPrimaryKey(other.getPrimaryKey());
          }
          if (other.hasIterator()) {
            iterator_ = other.iterator_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasTimestamp()) {
            setTimestamp(other.getTimestamp());
          }
          if (other.hasTotalCount()) {
            setTotalCount(other.getTotalCount());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  primaryKey_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  iterator_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 24: {
                  timestamp_ = input.readInt64();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                case 32: {
                  totalCount_ = input.readInt64();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 32
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private com.aliyun.ots.thirdparty.com.google.protobuf.ByteString primaryKey_ = com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes primary_key = 1;</code>
         * @return Whether the primaryKey field is set.
         */
        @java.lang.Override
        public boolean hasPrimaryKey() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional bytes primary_key = 1;</code>
         * @return The primaryKey.
         */
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString getPrimaryKey() {
          return primaryKey_;
        }
        /**
         * <code>optional bytes primary_key = 1;</code>
         * @param value The primaryKey to set.
         * @return This builder for chaining.
         */
        public Builder setPrimaryKey(com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          primaryKey_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes primary_key = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearPrimaryKey() {
          bitField0_ = (bitField0_ & ~0x00000001);
          primaryKey_ = getDefaultInstance().getPrimaryKey();
          onChanged();
          return this;
        }
  
        private java.lang.Object iterator_ = "";
        /**
         * <code>optional string iterator = 2;</code>
         * @return Whether the iterator field is set.
         */
        public boolean hasIterator() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @return The iterator.
         */
        public java.lang.String getIterator() {
          java.lang.Object ref = iterator_;
          if (!(ref instanceof java.lang.String)) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString bs =
                (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              iterator_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @return The bytes for iterator.
         */
        public com.aliyun.ots.thirdparty.com.google.protobuf.ByteString
            getIteratorBytes() {
          java.lang.Object ref = iterator_;
          if (ref instanceof String) {
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString b = 
                com.aliyun.ots.thirdparty.com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            iterator_ = b;
            return b;
          } else {
            return (com.aliyun.ots.thirdparty.com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @param value The iterator to set.
         * @return This builder for chaining.
         */
        public Builder setIterator(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          iterator_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearIterator() {
          iterator_ = getDefaultInstance().getIterator();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>optional string iterator = 2;</code>
         * @param value The bytes for iterator to set.
         * @return This builder for chaining.
         */
        public Builder setIteratorBytes(
            com.aliyun.ots.thirdparty.com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          iterator_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
  
        private long timestamp_ ;
        /**
         * <code>optional int64 timestamp = 3;</code>
         * @return Whether the timestamp field is set.
         */
        @java.lang.Override
        public boolean hasTimestamp() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional int64 timestamp = 3;</code>
         * @return The timestamp.
         */
        @java.lang.Override
        public long getTimestamp() {
          return timestamp_;
        }
        /**
         * <code>optional int64 timestamp = 3;</code>
         * @param value The timestamp to set.
         * @return This builder for chaining.
         */
        public Builder setTimestamp(long value) {
  
          timestamp_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 timestamp = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTimestamp() {
          bitField0_ = (bitField0_ & ~0x00000004);
          timestamp_ = 0L;
          onChanged();
          return this;
        }
  
        private long totalCount_ ;
        /**
         * <code>optional int64 total_count = 4;</code>
         * @return Whether the totalCount field is set.
         */
        @java.lang.Override
        public boolean hasTotalCount() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>optional int64 total_count = 4;</code>
         * @return The totalCount.
         */
        @java.lang.Override
        public long getTotalCount() {
          return totalCount_;
        }
        /**
         * <code>optional int64 total_count = 4;</code>
         * @param value The totalCount to set.
         * @return This builder for chaining.
         */
        public Builder setTotalCount(long value) {
  
          totalCount_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <code>optional int64 total_count = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearTotalCount() {
          bitField0_ = (bitField0_ & ~0x00000008);
          totalCount_ = 0L;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.TokenContentV2)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.TokenContentV2)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<TokenContentV2>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<TokenContentV2>() {
        @java.lang.Override
        public TokenContentV2 parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<TokenContentV2> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<TokenContentV2> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.TokenContentV2 getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface StreamTunnelConfigOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig)
        com.aliyun.ots.thirdparty.com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag flag = 1;</code>
       * @return Whether the flag field is set.
       */
      boolean hasFlag();
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag flag = 1;</code>
       * @return The flag.
       */
      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag getFlag();
  
      /**
       * <code>optional uint64 startOffset = 2;</code>
       * @return Whether the startOffset field is set.
       */
      boolean hasStartOffset();
      /**
       * <code>optional uint64 startOffset = 2;</code>
       * @return The startOffset.
       */
      long getStartOffset();
  
      /**
       * <code>optional uint64 endOffset = 3;</code>
       * @return Whether the endOffset field is set.
       */
      boolean hasEndOffset();
      /**
       * <code>optional uint64 endOffset = 3;</code>
       * @return The endOffset.
       */
      long getEndOffset();
    }
    /**
     * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig}
     */
    public static final class StreamTunnelConfig extends
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig)
        StreamTunnelConfigOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.aliyun.ots.thirdparty.com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 2,
          /* suffix= */ "",
          StreamTunnelConfig.class.getName());
      }
      // Use StreamTunnelConfig.newBuilder() to construct.
      private StreamTunnelConfig(com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
      }
      private StreamTunnelConfig() {
        flag_ = 0;
      }
  
      public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_descriptor;
      }
  
      @java.lang.Override
      protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder.class);
      }
  
      private int bitField0_;
      public static final int FLAG_FIELD_NUMBER = 1;
      private int flag_ = 0;
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag flag = 1;</code>
       * @return Whether the flag field is set.
       */
      @java.lang.Override public boolean hasFlag() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag flag = 1;</code>
       * @return The flag.
       */
      @java.lang.Override public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag getFlag() {
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag result = com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag.forNumber(flag_);
        return result == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag.LATEST : result;
      }
  
      public static final int STARTOFFSET_FIELD_NUMBER = 2;
      private long startOffset_ = 0L;
      /**
       * <code>optional uint64 startOffset = 2;</code>
       * @return Whether the startOffset field is set.
       */
      @java.lang.Override
      public boolean hasStartOffset() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint64 startOffset = 2;</code>
       * @return The startOffset.
       */
      @java.lang.Override
      public long getStartOffset() {
        return startOffset_;
      }
  
      public static final int ENDOFFSET_FIELD_NUMBER = 3;
      private long endOffset_ = 0L;
      /**
       * <code>optional uint64 endOffset = 3;</code>
       * @return Whether the endOffset field is set.
       */
      @java.lang.Override
      public boolean hasEndOffset() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional uint64 endOffset = 3;</code>
       * @return The endOffset.
       */
      @java.lang.Override
      public long getEndOffset() {
        return endOffset_;
      }
  
      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.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeEnum(1, flag_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeUInt64(2, startOffset_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeUInt64(3, endOffset_);
        }
        getUnknownFields().writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, flag_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeUInt64Size(2, startOffset_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.aliyun.ots.thirdparty.com.google.protobuf.CodedOutputStream
            .computeUInt64Size(3, endOffset_);
        }
        size += getUnknownFields().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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig)) {
          return super.equals(obj);
        }
        com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig other = (com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig) obj;
  
        if (hasFlag() != other.hasFlag()) return false;
        if (hasFlag()) {
          if (flag_ != other.flag_) return false;
        }
        if (hasStartOffset() != other.hasStartOffset()) return false;
        if (hasStartOffset()) {
          if (getStartOffset()
              != other.getStartOffset()) return false;
        }
        if (hasEndOffset() != other.hasEndOffset()) return false;
        if (hasEndOffset()) {
          if (getEndOffset()
              != other.getEndOffset()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasFlag()) {
          hash = (37 * hash) + FLAG_FIELD_NUMBER;
          hash = (53 * hash) + flag_;
        }
        if (hasStartOffset()) {
          hash = (37 * hash) + STARTOFFSET_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getStartOffset());
        }
        if (hasEndOffset()) {
          hash = (37 * hash) + ENDOFFSET_FIELD_NUMBER;
          hash = (53 * hash) + com.aliyun.ots.thirdparty.com.google.protobuf.Internal.hashLong(
              getEndOffset());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(
          java.nio.ByteBuffer data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(
          java.nio.ByteBuffer data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.ByteString data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(byte[] data)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(
          byte[] data,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input);
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseDelimitedFrom(
          java.io.InputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .parseWithIOException(PARSER, input);
      }
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig parseFrom(
          com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
          com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage
            .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.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig 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.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig}
       */
      public static final class Builder extends
          com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig)
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfigOrBuilder {
        public static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_descriptor;
        }
  
        @java.lang.Override
        protected com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.class, com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.Builder.class);
        }
  
        // Construct using com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.newBuilder()
        private Builder() {
  
        }
  
        private Builder(
            com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
  
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          flag_ = 0;
          startOffset_ = 0L;
          endOffset_ = 0L;
          return this;
        }
  
        @java.lang.Override
        public com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_descriptor;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig getDefaultInstanceForType() {
          return com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig build() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig buildPartial() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig result = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
  
        private void buildPartial0(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.flag_ = flag_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.startOffset_ = startOffset_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.endOffset_ = endOffset_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ |= to_bitField0_;
        }
  
        @java.lang.Override
        public Builder mergeFrom(com.aliyun.ots.thirdparty.com.google.protobuf.Message other) {
          if (other instanceof com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig) {
            return mergeFrom((com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig other) {
          if (other == com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig.getDefaultInstance()) return this;
          if (other.hasFlag()) {
            setFlag(other.getFlag());
          }
          if (other.hasStartOffset()) {
            setStartOffset(other.getStartOffset());
          }
          if (other.hasEndOffset()) {
            setEndOffset(other.getEndOffset());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  int tmpRaw = input.readEnum();
                  com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag tmpValue =
                      com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag.forNumber(tmpRaw);
                  if (tmpValue == null) {
                    mergeUnknownVarintField(1, tmpRaw);
                  } else {
                    flag_ = tmpRaw;
                    bitField0_ |= 0x00000001;
                  }
                  break;
                } // case 8
                case 16: {
                  startOffset_ = input.readUInt64();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 24: {
                  endOffset_ = input.readUInt64();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
  
        private int flag_ = 0;
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag flag = 1;</code>
         * @return Whether the flag field is set.
         */
        @java.lang.Override public boolean hasFlag() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag flag = 1;</code>
         * @return The flag.
         */
        @java.lang.Override
        public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag getFlag() {
          com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag result = com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag.forNumber(flag_);
          return result == null ? com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag.LATEST : result;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag flag = 1;</code>
         * @param value The flag to set.
         * @return This builder for chaining.
         */
        public Builder setFlag(com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StartOffsetFlag value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          flag_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>optional .com.alicloud.openservices.tablestore.core.protocol.StartOffsetFlag flag = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearFlag() {
          bitField0_ = (bitField0_ & ~0x00000001);
          flag_ = 0;
          onChanged();
          return this;
        }
  
        private long startOffset_ ;
        /**
         * <code>optional uint64 startOffset = 2;</code>
         * @return Whether the startOffset field is set.
         */
        @java.lang.Override
        public boolean hasStartOffset() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional uint64 startOffset = 2;</code>
         * @return The startOffset.
         */
        @java.lang.Override
        public long getStartOffset() {
          return startOffset_;
        }
        /**
         * <code>optional uint64 startOffset = 2;</code>
         * @param value The startOffset to set.
         * @return This builder for chaining.
         */
        public Builder setStartOffset(long value) {
  
          startOffset_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint64 startOffset = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearStartOffset() {
          bitField0_ = (bitField0_ & ~0x00000002);
          startOffset_ = 0L;
          onChanged();
          return this;
        }
  
        private long endOffset_ ;
        /**
         * <code>optional uint64 endOffset = 3;</code>
         * @return Whether the endOffset field is set.
         */
        @java.lang.Override
        public boolean hasEndOffset() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional uint64 endOffset = 3;</code>
         * @return The endOffset.
         */
        @java.lang.Override
        public long getEndOffset() {
          return endOffset_;
        }
        /**
         * <code>optional uint64 endOffset = 3;</code>
         * @param value The endOffset to set.
         * @return This builder for chaining.
         */
        public Builder setEndOffset(long value) {
  
          endOffset_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint64 endOffset = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearEndOffset() {
          bitField0_ = (bitField0_ & ~0x00000004);
          endOffset_ = 0L;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig)
      }
  
      // @@protoc_insertion_point(class_scope:com.alicloud.openservices.tablestore.core.protocol.StreamTunnelConfig)
      private static final com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig();
      }
  
      public static com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.aliyun.ots.thirdparty.com.google.protobuf.Parser<StreamTunnelConfig>
          PARSER = new com.aliyun.ots.thirdparty.com.google.protobuf.AbstractParser<StreamTunnelConfig>() {
        @java.lang.Override
        public StreamTunnelConfig parsePartialFrom(
            com.aliyun.ots.thirdparty.com.google.protobuf.CodedInputStream input,
            com.aliyun.ots.thirdparty.com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.aliyun.ots.thirdparty.com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.aliyun.ots.thirdparty.com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
  
      public static com.aliyun.ots.thirdparty.com.google.protobuf.Parser<StreamTunnelConfig> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.aliyun.ots.thirdparty.com.google.protobuf.Parser<StreamTunnelConfig> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.alicloud.openservices.tablestore.core.protocol.TunnelServiceApi.StreamTunnelConfig getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_fieldAccessorTable;
    private static final com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.Descriptor
      internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_descriptor;
    private static final 
      com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_fieldAccessorTable;
  
    public static com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static  com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      java.lang.String[] descriptorData = {
        "\n\030tunnel_service_api.proto\0222com.alicloud" +
        ".openservices.tablestore.core.protocol\"9" +
        "\n\005Error\022\014\n\004code\030\001 \002(\t\022\017\n\007message\030\002 \001(\t\022\021" +
        "\n\ttunnel_id\030\003 \001(\t\"\352\001\n\006Tunnel\022\022\n\ntable_na" +
        "me\030\001 \002(\t\022\023\n\013tunnel_name\030\003 \002(\t\022S\n\013tunnel_" +
        "type\030\004 \002(\0162>.com.alicloud.openservices.t" +
        "ablestore.core.protocol.TunnelType\022b\n\022St" +
        "reamTunnelConfig\030\005 \001(\0132F.com.alicloud.op" +
        "enservices.tablestore.core.protocol.Stre" +
        "amTunnelConfig\"a\n\023CreateTunnelRequest\022J\n" +
        "\006tunnel\030\001 \002(\0132:.com.alicloud.openservice" +
        "s.tablestore.core.protocol.Tunnel\")\n\024Cre" +
        "ateTunnelResponse\022\021\n\ttunnel_id\030\001 \002(\t\"Q\n\023" +
        "DeleteTunnelRequest\022\022\n\ntable_name\030\001 \002(\t\022" +
        "\023\n\013tunnel_name\030\002 \002(\t\022\021\n\ttunnel_id\030\003 \001(\t\"" +
        "\026\n\024DeleteTunnelResponse\"\'\n\021ListTunnelReq" +
        "uest\022\022\n\ntable_name\030\001 \001(\t\"\262\002\n\nTunnelInfo\022" +
        "\021\n\ttunnel_id\030\001 \002(\t\022\023\n\013tunnel_type\030\002 \002(\t\022" +
        "\022\n\ntable_name\030\003 \002(\t\022\025\n\rinstance_name\030\004 \002" +
        "(\t\022\021\n\tstream_id\030\005 \002(\t\022\r\n\005stage\030\006 \002(\t\022\017\n\007" +
        "expired\030\007 \001(\010\022\023\n\013tunnel_name\030\010 \001(\t\022\016\n\006pu" +
        "blic\030\t \001(\010\022d\n\024stream_tunnel_config\030\n \001(\013" +
        "2F.com.alicloud.openservices.tablestore." +
        "core.protocol.StreamTunnelConfig\022\023\n\013crea" +
        "te_time\030\013 \001(\003\"e\n\022ListTunnelResponse\022O\n\007t" +
        "unnels\030\001 \003(\0132>.com.alicloud.openservices" +
        ".tablestore.core.protocol.TunnelInfo\"S\n\025" +
        "DescribeTunnelRequest\022\022\n\ntable_name\030\001 \002(" +
        "\t\022\023\n\013tunnel_name\030\002 \002(\t\022\021\n\ttunnel_id\030\003 \001(" +
        "\t\"\216\001\n\013ChannelInfo\022\022\n\nchannel_id\030\001 \002(\t\022\024\n" +
        "\014channel_type\030\002 \001(\t\022\026\n\016channel_status\030\003 " +
        "\001(\t\022\021\n\tclient_id\030\004 \001(\t\022\023\n\013channel_rpo\030\005 " +
        "\001(\003\022\025\n\rchannel_count\030\006 \001(\003\"\317\001\n\026DescribeT" +
        "unnelResponse\022N\n\006tunnel\030\001 \002(\0132>.com.alic" +
        "loud.openservices.tablestore.core.protoc" +
        "ol.TunnelInfo\022Q\n\010channels\030\002 \003(\0132?.com.al" +
        "icloud.openservices.tablestore.core.prot" +
        "ocol.ChannelInfo\022\022\n\ntunnel_rpo\030\003 \001(\003\"\"\n\r" +
        "GetRpoRequest\022\021\n\ttunnel_id\030\001 \001(\t\"=\n\016GetR" +
        "poResponse\022\021\n\trpo_infos\030\001 \001(\014\022\030\n\020tunnel_" +
        "rpo_infos\030\002 \001(\014\"3\n\014ClientConfig\022\017\n\007timeo" +
        "ut\030\001 \001(\003\022\022\n\nclient_tag\030\002 \001(\t\"|\n\016ConnectR" +
        "equest\022\021\n\ttunnel_id\030\001 \002(\t\022W\n\rclient_conf" +
        "ig\030\002 \001(\0132@.com.alicloud.openservices.tab" +
        "lestore.core.protocol.ClientConfig\"$\n\017Co" +
        "nnectResponse\022\021\n\tclient_id\030\001 \002(\t\"\221\001\n\007Cha" +
        "nnel\022\022\n\nchannel_id\030\001 \002(\t\022\017\n\007version\030\002 \002(" +
        "\003\022Q\n\006status\030\003 \002(\0162A.com.alicloud.openser" +
        "vices.tablestore.core.protocol.ChannelSt" +
        "atus\022\016\n\006detail\030\004 \001(\014\"\207\001\n\020HeartbeatReques" +
        "t\022\021\n\ttunnel_id\030\001 \002(\t\022\021\n\tclient_id\030\002 \002(\t\022" +
        "M\n\010channels\030\003 \003(\0132;.com.alicloud.openser" +
        "vices.tablestore.core.protocol.Channel\"b" +
        "\n\021HeartbeatResponse\022M\n\010channels\030\001 \003(\0132;." +
        "com.alicloud.openservices.tablestore.cor" +
        "e.protocol.Channel\"7\n\017ShutdownRequest\022\021\n" +
        "\ttunnel_id\030\001 \002(\t\022\021\n\tclient_id\030\002 \002(\t\"\022\n\020S" +
        "hutdownResponse\"P\n\024GetCheckpointRequest\022" +
        "\021\n\ttunnel_id\030\001 \002(\t\022\021\n\tclient_id\030\002 \002(\t\022\022\n" +
        "\nchannel_id\030\003 \002(\t\"D\n\025GetCheckpointRespon" +
        "se\022\022\n\ncheckpoint\030\001 \002(\t\022\027\n\017sequence_numbe" +
        "r\030\002 \002(\003\"z\n\021CheckpointRequest\022\021\n\ttunnel_i" +
        "d\030\001 \002(\t\022\021\n\tclient_id\030\002 \002(\t\022\022\n\nchannel_id" +
        "\030\003 \002(\t\022\022\n\ncheckpoint\030\004 \002(\t\022\027\n\017sequence_n" +
        "umber\030\005 \002(\003\"\024\n\022CheckpointResponse\"]\n\022Rea" +
        "dRecordsRequest\022\021\n\ttunnel_id\030\001 \002(\t\022\021\n\tcl" +
        "ient_id\030\002 \002(\t\022\022\n\nchannel_id\030\003 \002(\t\022\r\n\005tok" +
        "en\030\004 \002(\t\"\204\001\n\006Record\022S\n\013action_type\030\001 \002(\016" +
        "2>.com.alicloud.openservices.tablestore." +
        "core.protocol.ActionType\022\016\n\006record\030\002 \002(\014" +
        "\022\025\n\rorigin_record\030\003 \001(\014\"\217\001\n\023ReadRecordsR" +
        "esponse\022K\n\007records\030\001 \003(\0132:.com.alicloud." +
        "openservices.tablestore.core.protocol.Re" +
        "cord\022\022\n\nnext_token\030\002 \002(\t\022\027\n\017may_more_rec" +
        "ord\030\003 \001(\010\")\n\005Token\022\017\n\007version\030\001 \002(\003\022\017\n\007c" +
        "ontent\030\002 \002(\014\"H\n\014TokenContent\022\023\n\013primary_" +
        "key\030\001 \001(\014\022\020\n\010iterator\030\002 \001(\t\022\021\n\ttimestamp" +
        "\030\003 \001(\003\"_\n\016TokenContentV2\022\023\n\013primary_key\030" +
        "\001 \001(\014\022\020\n\010iterator\030\002 \001(\t\022\021\n\ttimestamp\030\003 \001" +
        "(\003\022\023\n\013total_count\030\004 \001(\003\"\217\001\n\022StreamTunnel" +
        "Config\022Q\n\004flag\030\001 \001(\0162C.com.alicloud.open" +
        "services.tablestore.core.protocol.StartO" +
        "ffsetFlag\022\023\n\013startOffset\030\002 \001(\004\022\021\n\tendOff" +
        "set\030\003 \001(\004*9\n\nTunnelType\022\014\n\010BaseData\020\001\022\n\n" +
        "\006Stream\020\002\022\021\n\rBaseAndStream\020\003*A\n\rChannelS" +
        "tatus\022\010\n\004OPEN\020\001\022\013\n\007CLOSING\020\002\022\t\n\005CLOSE\020\003\022" +
        "\016\n\nTERMINATED\020\004*9\n\nActionType\022\013\n\007PUT_ROW" +
        "\020\001\022\016\n\nUPDATE_ROW\020\002\022\016\n\nDELETE_ROW\020\003*+\n\017St" +
        "artOffsetFlag\022\n\n\006LATEST\020\000\022\014\n\010EARLIEST\020\001"
      };
      descriptor = com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.aliyun.ots.thirdparty.com.google.protobuf.Descriptors.FileDescriptor[] {
          });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_Error_descriptor,
          new java.lang.String[] { "Code", "Message", "TunnelId", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_descriptor =
        getDescriptor().getMessageTypes().get(1);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_Tunnel_descriptor,
          new java.lang.String[] { "TableName", "TunnelName", "TunnelType", "StreamTunnelConfig", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_descriptor =
        getDescriptor().getMessageTypes().get(2);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelRequest_descriptor,
          new java.lang.String[] { "Tunnel", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_descriptor =
        getDescriptor().getMessageTypes().get(3);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_CreateTunnelResponse_descriptor,
          new java.lang.String[] { "TunnelId", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_descriptor =
        getDescriptor().getMessageTypes().get(4);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelRequest_descriptor,
          new java.lang.String[] { "TableName", "TunnelName", "TunnelId", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_descriptor =
        getDescriptor().getMessageTypes().get(5);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_DeleteTunnelResponse_descriptor,
          new java.lang.String[] { });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_descriptor =
        getDescriptor().getMessageTypes().get(6);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelRequest_descriptor,
          new java.lang.String[] { "TableName", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_descriptor =
        getDescriptor().getMessageTypes().get(7);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_TunnelInfo_descriptor,
          new java.lang.String[] { "TunnelId", "TunnelType", "TableName", "InstanceName", "StreamId", "Stage", "Expired", "TunnelName", "Public", "StreamTunnelConfig", "CreateTime", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_descriptor =
        getDescriptor().getMessageTypes().get(8);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ListTunnelResponse_descriptor,
          new java.lang.String[] { "Tunnels", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_descriptor =
        getDescriptor().getMessageTypes().get(9);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelRequest_descriptor,
          new java.lang.String[] { "TableName", "TunnelName", "TunnelId", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_descriptor =
        getDescriptor().getMessageTypes().get(10);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ChannelInfo_descriptor,
          new java.lang.String[] { "ChannelId", "ChannelType", "ChannelStatus", "ClientId", "ChannelRpo", "ChannelCount", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_descriptor =
        getDescriptor().getMessageTypes().get(11);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_DescribeTunnelResponse_descriptor,
          new java.lang.String[] { "Tunnel", "Channels", "TunnelRpo", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_descriptor =
        getDescriptor().getMessageTypes().get(12);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoRequest_descriptor,
          new java.lang.String[] { "TunnelId", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_descriptor =
        getDescriptor().getMessageTypes().get(13);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_GetRpoResponse_descriptor,
          new java.lang.String[] { "RpoInfos", "TunnelRpoInfos", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_descriptor =
        getDescriptor().getMessageTypes().get(14);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ClientConfig_descriptor,
          new java.lang.String[] { "Timeout", "ClientTag", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_descriptor =
        getDescriptor().getMessageTypes().get(15);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectRequest_descriptor,
          new java.lang.String[] { "TunnelId", "ClientConfig", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_descriptor =
        getDescriptor().getMessageTypes().get(16);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ConnectResponse_descriptor,
          new java.lang.String[] { "ClientId", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_descriptor =
        getDescriptor().getMessageTypes().get(17);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_Channel_descriptor,
          new java.lang.String[] { "ChannelId", "Version", "Status", "Detail", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_descriptor =
        getDescriptor().getMessageTypes().get(18);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatRequest_descriptor,
          new java.lang.String[] { "TunnelId", "ClientId", "Channels", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_descriptor =
        getDescriptor().getMessageTypes().get(19);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_HeartbeatResponse_descriptor,
          new java.lang.String[] { "Channels", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_descriptor =
        getDescriptor().getMessageTypes().get(20);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownRequest_descriptor,
          new java.lang.String[] { "TunnelId", "ClientId", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_descriptor =
        getDescriptor().getMessageTypes().get(21);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ShutdownResponse_descriptor,
          new java.lang.String[] { });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_descriptor =
        getDescriptor().getMessageTypes().get(22);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointRequest_descriptor,
          new java.lang.String[] { "TunnelId", "ClientId", "ChannelId", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_descriptor =
        getDescriptor().getMessageTypes().get(23);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_GetCheckpointResponse_descriptor,
          new java.lang.String[] { "Checkpoint", "SequenceNumber", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_descriptor =
        getDescriptor().getMessageTypes().get(24);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointRequest_descriptor,
          new java.lang.String[] { "TunnelId", "ClientId", "ChannelId", "Checkpoint", "SequenceNumber", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_descriptor =
        getDescriptor().getMessageTypes().get(25);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_CheckpointResponse_descriptor,
          new java.lang.String[] { });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_descriptor =
        getDescriptor().getMessageTypes().get(26);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsRequest_descriptor,
          new java.lang.String[] { "TunnelId", "ClientId", "ChannelId", "Token", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_descriptor =
        getDescriptor().getMessageTypes().get(27);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_Record_descriptor,
          new java.lang.String[] { "ActionType", "Record", "OriginRecord", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_descriptor =
        getDescriptor().getMessageTypes().get(28);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_ReadRecordsResponse_descriptor,
          new java.lang.String[] { "Records", "NextToken", "MayMoreRecord", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_descriptor =
        getDescriptor().getMessageTypes().get(29);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_Token_descriptor,
          new java.lang.String[] { "Version", "Content", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_descriptor =
        getDescriptor().getMessageTypes().get(30);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContent_descriptor,
          new java.lang.String[] { "PrimaryKey", "Iterator", "Timestamp", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_descriptor =
        getDescriptor().getMessageTypes().get(31);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_TokenContentV2_descriptor,
          new java.lang.String[] { "PrimaryKey", "Iterator", "Timestamp", "TotalCount", });
      internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_descriptor =
        getDescriptor().getMessageTypes().get(32);
      internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_fieldAccessorTable = new
        com.aliyun.ots.thirdparty.com.google.protobuf.GeneratedMessage.FieldAccessorTable(
          internal_static_com_alicloud_openservices_tablestore_core_protocol_StreamTunnelConfig_descriptor,
          new java.lang.String[] { "Flag", "StartOffset", "EndOffset", });
      descriptor.resolveAllFeaturesImmutable();
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  