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

package com.alibaba.otter.canal.protocol;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code com.alibaba.otter.canal.protocol.PacketType}
   */
  public enum PacketType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     *compatible
     * </pre>
     *
     * <code>PACKAGETYPECOMPATIBLEPROTO2 = 0;</code>
     */
    PACKAGETYPECOMPATIBLEPROTO2(0),
    /**
     * <code>HANDSHAKE = 1;</code>
     */
    HANDSHAKE(1),
    /**
     * <code>CLIENTAUTHENTICATION = 2;</code>
     */
    CLIENTAUTHENTICATION(2),
    /**
     * <code>ACK = 3;</code>
     */
    ACK(3),
    /**
     * <code>SERVER = 4;</code>
     */
    SERVER(4),
    /**
     * <code>INSTANCE = 5;</code>
     */
    INSTANCE(5),
    /**
     * <code>LOG = 6;</code>
     */
    LOG(6),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     *compatible
     * </pre>
     *
     * <code>PACKAGETYPECOMPATIBLEPROTO2 = 0;</code>
     */
    public static final int PACKAGETYPECOMPATIBLEPROTO2_VALUE = 0;
    /**
     * <code>HANDSHAKE = 1;</code>
     */
    public static final int HANDSHAKE_VALUE = 1;
    /**
     * <code>CLIENTAUTHENTICATION = 2;</code>
     */
    public static final int CLIENTAUTHENTICATION_VALUE = 2;
    /**
     * <code>ACK = 3;</code>
     */
    public static final int ACK_VALUE = 3;
    /**
     * <code>SERVER = 4;</code>
     */
    public static final int SERVER_VALUE = 4;
    /**
     * <code>INSTANCE = 5;</code>
     */
    public static final int INSTANCE_VALUE = 5;
    /**
     * <code>LOG = 6;</code>
     */
    public static final int LOG_VALUE = 6;


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

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static PacketType valueOf(int value) {
      return forNumber(value);
    }

    public static PacketType forNumber(int value) {
      switch (value) {
        case 0: return PACKAGETYPECOMPATIBLEPROTO2;
        case 1: return HANDSHAKE;
        case 2: return CLIENTAUTHENTICATION;
        case 3: return ACK;
        case 4: return SERVER;
        case 5: return INSTANCE;
        case 6: return LOG;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.alibaba.otter.canal.protocol.AdminPacket.getDescriptor().getEnumTypes().get(0);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:com.alibaba.otter.canal.protocol.PacketType)
  }

  public interface PacketOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.alibaba.otter.canal.protocol.Packet)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 magic_number = 1;</code>
     */
    int getMagicNumber();

    /**
     * <code>int32 version = 2;</code>
     */
    int getVersion();

    /**
     * <code>.com.alibaba.otter.canal.protocol.PacketType type = 3;</code>
     */
    int getTypeValue();
    /**
     * <code>.com.alibaba.otter.canal.protocol.PacketType type = 3;</code>
     */
    com.alibaba.otter.canal.protocol.AdminPacket.PacketType getType();

    /**
     * <code>bytes body = 4;</code>
     */
    com.google.protobuf.ByteString getBody();

    public com.alibaba.otter.canal.protocol.AdminPacket.Packet.MagicNumberPresentCase getMagicNumberPresentCase();

    public com.alibaba.otter.canal.protocol.AdminPacket.Packet.VersionPresentCase getVersionPresentCase();
  }
  /**
   * Protobuf type {@code com.alibaba.otter.canal.protocol.Packet}
   */
  public  static final class Packet extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.alibaba.otter.canal.protocol.Packet)
      PacketOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Packet.newBuilder() to construct.
    private Packet(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Packet() {
      type_ = 0;
      body_ = com.google.protobuf.ByteString.EMPTY;
    }

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

              type_ = rawValue;
              break;
            }
            case 34: {

              body_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Packet_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Packet_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.alibaba.otter.canal.protocol.AdminPacket.Packet.class, com.alibaba.otter.canal.protocol.AdminPacket.Packet.Builder.class);
    }

    private int magicNumberPresentCase_ = 0;
    private java.lang.Object magicNumberPresent_;
    public enum MagicNumberPresentCase
        implements com.google.protobuf.Internal.EnumLite {
      MAGIC_NUMBER(1),
      MAGICNUMBERPRESENT_NOT_SET(0);
      private final int value;
      private MagicNumberPresentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static MagicNumberPresentCase valueOf(int value) {
        return forNumber(value);
      }

      public static MagicNumberPresentCase forNumber(int value) {
        switch (value) {
          case 1: return MAGIC_NUMBER;
          case 0: return MAGICNUMBERPRESENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public MagicNumberPresentCase
    getMagicNumberPresentCase() {
      return MagicNumberPresentCase.forNumber(
          magicNumberPresentCase_);
    }

    private int versionPresentCase_ = 0;
    private java.lang.Object versionPresent_;
    public enum VersionPresentCase
        implements com.google.protobuf.Internal.EnumLite {
      VERSION(2),
      VERSIONPRESENT_NOT_SET(0);
      private final int value;
      private VersionPresentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static VersionPresentCase valueOf(int value) {
        return forNumber(value);
      }

      public static VersionPresentCase forNumber(int value) {
        switch (value) {
          case 2: return VERSION;
          case 0: return VERSIONPRESENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public VersionPresentCase
    getVersionPresentCase() {
      return VersionPresentCase.forNumber(
          versionPresentCase_);
    }

    public static final int MAGIC_NUMBER_FIELD_NUMBER = 1;
    /**
     * <code>int32 magic_number = 1;</code>
     */
    public int getMagicNumber() {
      if (magicNumberPresentCase_ == 1) {
        return (java.lang.Integer) magicNumberPresent_;
      }
      return 0;
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    /**
     * <code>int32 version = 2;</code>
     */
    public int getVersion() {
      if (versionPresentCase_ == 2) {
        return (java.lang.Integer) versionPresent_;
      }
      return 0;
    }

    public static final int TYPE_FIELD_NUMBER = 3;
    private int type_;
    /**
     * <code>.com.alibaba.otter.canal.protocol.PacketType type = 3;</code>
     */
    public int getTypeValue() {
      return type_;
    }
    /**
     * <code>.com.alibaba.otter.canal.protocol.PacketType type = 3;</code>
     */
    public com.alibaba.otter.canal.protocol.AdminPacket.PacketType getType() {
      @SuppressWarnings("deprecation")
      com.alibaba.otter.canal.protocol.AdminPacket.PacketType result = com.alibaba.otter.canal.protocol.AdminPacket.PacketType.valueOf(type_);
      return result == null ? com.alibaba.otter.canal.protocol.AdminPacket.PacketType.UNRECOGNIZED : result;
    }

    public static final int BODY_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString body_;
    /**
     * <code>bytes body = 4;</code>
     */
    public com.google.protobuf.ByteString getBody() {
      return body_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (magicNumberPresentCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) magicNumberPresent_));
      }
      if (versionPresentCase_ == 2) {
        output.writeInt32(
            2, (int)((java.lang.Integer) versionPresent_));
      }
      if (type_ != com.alibaba.otter.canal.protocol.AdminPacket.PacketType.PACKAGETYPECOMPATIBLEPROTO2.getNumber()) {
        output.writeEnum(3, type_);
      }
      if (!body_.isEmpty()) {
        output.writeBytes(4, body_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (magicNumberPresentCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              1, (int)((java.lang.Integer) magicNumberPresent_));
      }
      if (versionPresentCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              2, (int)((java.lang.Integer) versionPresent_));
      }
      if (type_ != com.alibaba.otter.canal.protocol.AdminPacket.PacketType.PACKAGETYPECOMPATIBLEPROTO2.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, type_);
      }
      if (!body_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, body_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.alibaba.otter.canal.protocol.AdminPacket.Packet)) {
        return super.equals(obj);
      }
      com.alibaba.otter.canal.protocol.AdminPacket.Packet other = (com.alibaba.otter.canal.protocol.AdminPacket.Packet) obj;

      boolean result = true;
      result = result && type_ == other.type_;
      result = result && getBody()
          .equals(other.getBody());
      result = result && getMagicNumberPresentCase().equals(
          other.getMagicNumberPresentCase());
      if (!result) return false;
      switch (magicNumberPresentCase_) {
        case 1:
          result = result && (getMagicNumber()
              == other.getMagicNumber());
          break;
        case 0:
        default:
      }
      result = result && getVersionPresentCase().equals(
          other.getVersionPresentCase());
      if (!result) return false;
      switch (versionPresentCase_) {
        case 2:
          result = result && (getVersion()
              == other.getVersion());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + type_;
      hash = (37 * hash) + BODY_FIELD_NUMBER;
      hash = (53 * hash) + getBody().hashCode();
      switch (magicNumberPresentCase_) {
        case 1:
          hash = (37 * hash) + MAGIC_NUMBER_FIELD_NUMBER;
          hash = (53 * hash) + getMagicNumber();
          break;
        case 0:
        default:
      }
      switch (versionPresentCase_) {
        case 2:
          hash = (37 * hash) + VERSION_FIELD_NUMBER;
          hash = (53 * hash) + getVersion();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.alibaba.otter.canal.protocol.AdminPacket.Packet prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.alibaba.otter.canal.protocol.Packet}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.alibaba.otter.canal.protocol.Packet)
        com.alibaba.otter.canal.protocol.AdminPacket.PacketOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Packet_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Packet_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alibaba.otter.canal.protocol.AdminPacket.Packet.class, com.alibaba.otter.canal.protocol.AdminPacket.Packet.Builder.class);
      }

      // Construct using com.alibaba.otter.canal.protocol.AdminPacket.Packet.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

        magicNumberPresentCase_ = 0;
        magicNumberPresent_ = null;
        versionPresentCase_ = 0;
        versionPresent_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Packet_descriptor;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.Packet getDefaultInstanceForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.Packet.getDefaultInstance();
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.Packet build() {
        com.alibaba.otter.canal.protocol.AdminPacket.Packet result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.Packet buildPartial() {
        com.alibaba.otter.canal.protocol.AdminPacket.Packet result = new com.alibaba.otter.canal.protocol.AdminPacket.Packet(this);
        if (magicNumberPresentCase_ == 1) {
          result.magicNumberPresent_ = magicNumberPresent_;
        }
        if (versionPresentCase_ == 2) {
          result.versionPresent_ = versionPresent_;
        }
        result.type_ = type_;
        result.body_ = body_;
        result.magicNumberPresentCase_ = magicNumberPresentCase_;
        result.versionPresentCase_ = versionPresentCase_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.alibaba.otter.canal.protocol.AdminPacket.Packet other) {
        if (other == com.alibaba.otter.canal.protocol.AdminPacket.Packet.getDefaultInstance()) return this;
        if (other.type_ != 0) {
          setTypeValue(other.getTypeValue());
        }
        if (other.getBody() != com.google.protobuf.ByteString.EMPTY) {
          setBody(other.getBody());
        }
        switch (other.getMagicNumberPresentCase()) {
          case MAGIC_NUMBER: {
            setMagicNumber(other.getMagicNumber());
            break;
          }
          case MAGICNUMBERPRESENT_NOT_SET: {
            break;
          }
        }
        switch (other.getVersionPresentCase()) {
          case VERSION: {
            setVersion(other.getVersion());
            break;
          }
          case VERSIONPRESENT_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.alibaba.otter.canal.protocol.AdminPacket.Packet parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.alibaba.otter.canal.protocol.AdminPacket.Packet) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int magicNumberPresentCase_ = 0;
      private java.lang.Object magicNumberPresent_;
      public MagicNumberPresentCase
          getMagicNumberPresentCase() {
        return MagicNumberPresentCase.forNumber(
            magicNumberPresentCase_);
      }

      public Builder clearMagicNumberPresent() {
        magicNumberPresentCase_ = 0;
        magicNumberPresent_ = null;
        onChanged();
        return this;
      }

      private int versionPresentCase_ = 0;
      private java.lang.Object versionPresent_;
      public VersionPresentCase
          getVersionPresentCase() {
        return VersionPresentCase.forNumber(
            versionPresentCase_);
      }

      public Builder clearVersionPresent() {
        versionPresentCase_ = 0;
        versionPresent_ = null;
        onChanged();
        return this;
      }


      /**
       * <code>int32 magic_number = 1;</code>
       */
      public int getMagicNumber() {
        if (magicNumberPresentCase_ == 1) {
          return (java.lang.Integer) magicNumberPresent_;
        }
        return 0;
      }
      /**
       * <code>int32 magic_number = 1;</code>
       */
      public Builder setMagicNumber(int value) {
        magicNumberPresentCase_ = 1;
        magicNumberPresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 magic_number = 1;</code>
       */
      public Builder clearMagicNumber() {
        if (magicNumberPresentCase_ == 1) {
          magicNumberPresentCase_ = 0;
          magicNumberPresent_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>int32 version = 2;</code>
       */
      public int getVersion() {
        if (versionPresentCase_ == 2) {
          return (java.lang.Integer) versionPresent_;
        }
        return 0;
      }
      /**
       * <code>int32 version = 2;</code>
       */
      public Builder setVersion(int value) {
        versionPresentCase_ = 2;
        versionPresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 version = 2;</code>
       */
      public Builder clearVersion() {
        if (versionPresentCase_ == 2) {
          versionPresentCase_ = 0;
          versionPresent_ = null;
          onChanged();
        }
        return this;
      }

      private int type_ = 0;
      /**
       * <code>.com.alibaba.otter.canal.protocol.PacketType type = 3;</code>
       */
      public int getTypeValue() {
        return type_;
      }
      /**
       * <code>.com.alibaba.otter.canal.protocol.PacketType type = 3;</code>
       */
      public Builder setTypeValue(int value) {
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.com.alibaba.otter.canal.protocol.PacketType type = 3;</code>
       */
      public com.alibaba.otter.canal.protocol.AdminPacket.PacketType getType() {
        @SuppressWarnings("deprecation")
        com.alibaba.otter.canal.protocol.AdminPacket.PacketType result = com.alibaba.otter.canal.protocol.AdminPacket.PacketType.valueOf(type_);
        return result == null ? com.alibaba.otter.canal.protocol.AdminPacket.PacketType.UNRECOGNIZED : result;
      }
      /**
       * <code>.com.alibaba.otter.canal.protocol.PacketType type = 3;</code>
       */
      public Builder setType(com.alibaba.otter.canal.protocol.AdminPacket.PacketType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.com.alibaba.otter.canal.protocol.PacketType type = 3;</code>
       */
      public Builder clearType() {
        
        type_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString body_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes body = 4;</code>
       */
      public com.google.protobuf.ByteString getBody() {
        return body_;
      }
      /**
       * <code>bytes body = 4;</code>
       */
      public Builder setBody(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        body_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes body = 4;</code>
       */
      public Builder clearBody() {
        
        body_ = getDefaultInstance().getBody();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:com.alibaba.otter.canal.protocol.Packet)
    }

    // @@protoc_insertion_point(class_scope:com.alibaba.otter.canal.protocol.Packet)
    private static final com.alibaba.otter.canal.protocol.AdminPacket.Packet DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.alibaba.otter.canal.protocol.AdminPacket.Packet();
    }

    public static com.alibaba.otter.canal.protocol.AdminPacket.Packet getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.alibaba.otter.canal.protocol.AdminPacket.Packet getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AckOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.alibaba.otter.canal.protocol.Ack)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 code = 1;</code>
     */
    int getCode();

    /**
     * <pre>
     * if something like compression is not supported, erorr_message will tell about it.
     * </pre>
     *
     * <code>string message = 2;</code>
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * if something like compression is not supported, erorr_message will tell about it.
     * </pre>
     *
     * <code>string message = 2;</code>
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    public com.alibaba.otter.canal.protocol.AdminPacket.Ack.ErrorCodePresentCase getErrorCodePresentCase();
  }
  /**
   * Protobuf type {@code com.alibaba.otter.canal.protocol.Ack}
   */
  public  static final class Ack extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.alibaba.otter.canal.protocol.Ack)
      AckOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Ack.newBuilder() to construct.
    private Ack(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Ack() {
      message_ = "";
    }

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

              message_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Ack_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Ack_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.alibaba.otter.canal.protocol.AdminPacket.Ack.class, com.alibaba.otter.canal.protocol.AdminPacket.Ack.Builder.class);
    }

    private int errorCodePresentCase_ = 0;
    private java.lang.Object errorCodePresent_;
    public enum ErrorCodePresentCase
        implements com.google.protobuf.Internal.EnumLite {
      CODE(1),
      ERRORCODEPRESENT_NOT_SET(0);
      private final int value;
      private ErrorCodePresentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ErrorCodePresentCase valueOf(int value) {
        return forNumber(value);
      }

      public static ErrorCodePresentCase forNumber(int value) {
        switch (value) {
          case 1: return CODE;
          case 0: return ERRORCODEPRESENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ErrorCodePresentCase
    getErrorCodePresentCase() {
      return ErrorCodePresentCase.forNumber(
          errorCodePresentCase_);
    }

    public static final int CODE_FIELD_NUMBER = 1;
    /**
     * <code>int32 code = 1;</code>
     */
    public int getCode() {
      if (errorCodePresentCase_ == 1) {
        return (java.lang.Integer) errorCodePresent_;
      }
      return 0;
    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    private volatile java.lang.Object message_;
    /**
     * <pre>
     * if something like compression is not supported, erorr_message will tell about it.
     * </pre>
     *
     * <code>string message = 2;</code>
     */
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        message_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * if something like compression is not supported, erorr_message will tell about it.
     * </pre>
     *
     * <code>string message = 2;</code>
     */
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (errorCodePresentCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) errorCodePresent_));
      }
      if (!getMessageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (errorCodePresentCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              1, (int)((java.lang.Integer) errorCodePresent_));
      }
      if (!getMessageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.alibaba.otter.canal.protocol.AdminPacket.Ack)) {
        return super.equals(obj);
      }
      com.alibaba.otter.canal.protocol.AdminPacket.Ack other = (com.alibaba.otter.canal.protocol.AdminPacket.Ack) obj;

      boolean result = true;
      result = result && getMessage()
          .equals(other.getMessage());
      result = result && getErrorCodePresentCase().equals(
          other.getErrorCodePresentCase());
      if (!result) return false;
      switch (errorCodePresentCase_) {
        case 1:
          result = result && (getCode()
              == other.getCode());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      switch (errorCodePresentCase_) {
        case 1:
          hash = (37 * hash) + CODE_FIELD_NUMBER;
          hash = (53 * hash) + getCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.alibaba.otter.canal.protocol.AdminPacket.Ack prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.alibaba.otter.canal.protocol.Ack}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.alibaba.otter.canal.protocol.Ack)
        com.alibaba.otter.canal.protocol.AdminPacket.AckOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Ack_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Ack_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alibaba.otter.canal.protocol.AdminPacket.Ack.class, com.alibaba.otter.canal.protocol.AdminPacket.Ack.Builder.class);
      }

      // Construct using com.alibaba.otter.canal.protocol.AdminPacket.Ack.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        errorCodePresentCase_ = 0;
        errorCodePresent_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Ack_descriptor;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.Ack getDefaultInstanceForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.Ack.getDefaultInstance();
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.Ack build() {
        com.alibaba.otter.canal.protocol.AdminPacket.Ack result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.Ack buildPartial() {
        com.alibaba.otter.canal.protocol.AdminPacket.Ack result = new com.alibaba.otter.canal.protocol.AdminPacket.Ack(this);
        if (errorCodePresentCase_ == 1) {
          result.errorCodePresent_ = errorCodePresent_;
        }
        result.message_ = message_;
        result.errorCodePresentCase_ = errorCodePresentCase_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.alibaba.otter.canal.protocol.AdminPacket.Ack other) {
        if (other == com.alibaba.otter.canal.protocol.AdminPacket.Ack.getDefaultInstance()) return this;
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          onChanged();
        }
        switch (other.getErrorCodePresentCase()) {
          case CODE: {
            setCode(other.getCode());
            break;
          }
          case ERRORCODEPRESENT_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.alibaba.otter.canal.protocol.AdminPacket.Ack parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.alibaba.otter.canal.protocol.AdminPacket.Ack) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int errorCodePresentCase_ = 0;
      private java.lang.Object errorCodePresent_;
      public ErrorCodePresentCase
          getErrorCodePresentCase() {
        return ErrorCodePresentCase.forNumber(
            errorCodePresentCase_);
      }

      public Builder clearErrorCodePresent() {
        errorCodePresentCase_ = 0;
        errorCodePresent_ = null;
        onChanged();
        return this;
      }


      /**
       * <code>int32 code = 1;</code>
       */
      public int getCode() {
        if (errorCodePresentCase_ == 1) {
          return (java.lang.Integer) errorCodePresent_;
        }
        return 0;
      }
      /**
       * <code>int32 code = 1;</code>
       */
      public Builder setCode(int value) {
        errorCodePresentCase_ = 1;
        errorCodePresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 code = 1;</code>
       */
      public Builder clearCode() {
        if (errorCodePresentCase_ == 1) {
          errorCodePresentCase_ = 0;
          errorCodePresent_ = null;
          onChanged();
        }
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * if something like compression is not supported, erorr_message will tell about it.
       * </pre>
       *
       * <code>string message = 2;</code>
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * if something like compression is not supported, erorr_message will tell about it.
       * </pre>
       *
       * <code>string message = 2;</code>
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * if something like compression is not supported, erorr_message will tell about it.
       * </pre>
       *
       * <code>string message = 2;</code>
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        message_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * if something like compression is not supported, erorr_message will tell about it.
       * </pre>
       *
       * <code>string message = 2;</code>
       */
      public Builder clearMessage() {
        
        message_ = getDefaultInstance().getMessage();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * if something like compression is not supported, erorr_message will tell about it.
       * </pre>
       *
       * <code>string message = 2;</code>
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        message_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:com.alibaba.otter.canal.protocol.Ack)
    }

    // @@protoc_insertion_point(class_scope:com.alibaba.otter.canal.protocol.Ack)
    private static final com.alibaba.otter.canal.protocol.AdminPacket.Ack DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.alibaba.otter.canal.protocol.AdminPacket.Ack();
    }

    public static com.alibaba.otter.canal.protocol.AdminPacket.Ack getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.alibaba.otter.canal.protocol.AdminPacket.Ack getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandshakeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.alibaba.otter.canal.protocol.Handshake)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string communication_encoding = 1;</code>
     */
    java.lang.String getCommunicationEncoding();
    /**
     * <code>string communication_encoding = 1;</code>
     */
    com.google.protobuf.ByteString
        getCommunicationEncodingBytes();

    /**
     * <code>bytes seeds = 2;</code>
     */
    com.google.protobuf.ByteString getSeeds();

    public com.alibaba.otter.canal.protocol.AdminPacket.Handshake.CommunicationEncodingPresentCase getCommunicationEncodingPresentCase();
  }
  /**
   * Protobuf type {@code com.alibaba.otter.canal.protocol.Handshake}
   */
  public  static final class Handshake extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.alibaba.otter.canal.protocol.Handshake)
      HandshakeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Handshake.newBuilder() to construct.
    private Handshake(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Handshake() {
      seeds_ = com.google.protobuf.ByteString.EMPTY;
    }

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

              seeds_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Handshake_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Handshake_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.alibaba.otter.canal.protocol.AdminPacket.Handshake.class, com.alibaba.otter.canal.protocol.AdminPacket.Handshake.Builder.class);
    }

    private int communicationEncodingPresentCase_ = 0;
    private java.lang.Object communicationEncodingPresent_;
    public enum CommunicationEncodingPresentCase
        implements com.google.protobuf.Internal.EnumLite {
      COMMUNICATION_ENCODING(1),
      COMMUNICATIONENCODINGPRESENT_NOT_SET(0);
      private final int value;
      private CommunicationEncodingPresentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static CommunicationEncodingPresentCase valueOf(int value) {
        return forNumber(value);
      }

      public static CommunicationEncodingPresentCase forNumber(int value) {
        switch (value) {
          case 1: return COMMUNICATION_ENCODING;
          case 0: return COMMUNICATIONENCODINGPRESENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public CommunicationEncodingPresentCase
    getCommunicationEncodingPresentCase() {
      return CommunicationEncodingPresentCase.forNumber(
          communicationEncodingPresentCase_);
    }

    public static final int COMMUNICATION_ENCODING_FIELD_NUMBER = 1;
    /**
     * <code>string communication_encoding = 1;</code>
     */
    public java.lang.String getCommunicationEncoding() {
      java.lang.Object ref = "";
      if (communicationEncodingPresentCase_ == 1) {
        ref = communicationEncodingPresent_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (communicationEncodingPresentCase_ == 1) {
          communicationEncodingPresent_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string communication_encoding = 1;</code>
     */
    public com.google.protobuf.ByteString
        getCommunicationEncodingBytes() {
      java.lang.Object ref = "";
      if (communicationEncodingPresentCase_ == 1) {
        ref = communicationEncodingPresent_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (communicationEncodingPresentCase_ == 1) {
          communicationEncodingPresent_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SEEDS_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString seeds_;
    /**
     * <code>bytes seeds = 2;</code>
     */
    public com.google.protobuf.ByteString getSeeds() {
      return seeds_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (communicationEncodingPresentCase_ == 1) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, communicationEncodingPresent_);
      }
      if (!seeds_.isEmpty()) {
        output.writeBytes(2, seeds_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (communicationEncodingPresentCase_ == 1) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, communicationEncodingPresent_);
      }
      if (!seeds_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, seeds_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.alibaba.otter.canal.protocol.AdminPacket.Handshake)) {
        return super.equals(obj);
      }
      com.alibaba.otter.canal.protocol.AdminPacket.Handshake other = (com.alibaba.otter.canal.protocol.AdminPacket.Handshake) obj;

      boolean result = true;
      result = result && getSeeds()
          .equals(other.getSeeds());
      result = result && getCommunicationEncodingPresentCase().equals(
          other.getCommunicationEncodingPresentCase());
      if (!result) return false;
      switch (communicationEncodingPresentCase_) {
        case 1:
          result = result && getCommunicationEncoding()
              .equals(other.getCommunicationEncoding());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SEEDS_FIELD_NUMBER;
      hash = (53 * hash) + getSeeds().hashCode();
      switch (communicationEncodingPresentCase_) {
        case 1:
          hash = (37 * hash) + COMMUNICATION_ENCODING_FIELD_NUMBER;
          hash = (53 * hash) + getCommunicationEncoding().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.alibaba.otter.canal.protocol.AdminPacket.Handshake prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.alibaba.otter.canal.protocol.Handshake}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.alibaba.otter.canal.protocol.Handshake)
        com.alibaba.otter.canal.protocol.AdminPacket.HandshakeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Handshake_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Handshake_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alibaba.otter.canal.protocol.AdminPacket.Handshake.class, com.alibaba.otter.canal.protocol.AdminPacket.Handshake.Builder.class);
      }

      // Construct using com.alibaba.otter.canal.protocol.AdminPacket.Handshake.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        communicationEncodingPresentCase_ = 0;
        communicationEncodingPresent_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_Handshake_descriptor;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.Handshake getDefaultInstanceForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.Handshake.getDefaultInstance();
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.Handshake build() {
        com.alibaba.otter.canal.protocol.AdminPacket.Handshake result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.Handshake buildPartial() {
        com.alibaba.otter.canal.protocol.AdminPacket.Handshake result = new com.alibaba.otter.canal.protocol.AdminPacket.Handshake(this);
        if (communicationEncodingPresentCase_ == 1) {
          result.communicationEncodingPresent_ = communicationEncodingPresent_;
        }
        result.seeds_ = seeds_;
        result.communicationEncodingPresentCase_ = communicationEncodingPresentCase_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.alibaba.otter.canal.protocol.AdminPacket.Handshake other) {
        if (other == com.alibaba.otter.canal.protocol.AdminPacket.Handshake.getDefaultInstance()) return this;
        if (other.getSeeds() != com.google.protobuf.ByteString.EMPTY) {
          setSeeds(other.getSeeds());
        }
        switch (other.getCommunicationEncodingPresentCase()) {
          case COMMUNICATION_ENCODING: {
            communicationEncodingPresentCase_ = 1;
            communicationEncodingPresent_ = other.communicationEncodingPresent_;
            onChanged();
            break;
          }
          case COMMUNICATIONENCODINGPRESENT_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.alibaba.otter.canal.protocol.AdminPacket.Handshake parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.alibaba.otter.canal.protocol.AdminPacket.Handshake) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int communicationEncodingPresentCase_ = 0;
      private java.lang.Object communicationEncodingPresent_;
      public CommunicationEncodingPresentCase
          getCommunicationEncodingPresentCase() {
        return CommunicationEncodingPresentCase.forNumber(
            communicationEncodingPresentCase_);
      }

      public Builder clearCommunicationEncodingPresent() {
        communicationEncodingPresentCase_ = 0;
        communicationEncodingPresent_ = null;
        onChanged();
        return this;
      }


      /**
       * <code>string communication_encoding = 1;</code>
       */
      public java.lang.String getCommunicationEncoding() {
        java.lang.Object ref = "";
        if (communicationEncodingPresentCase_ == 1) {
          ref = communicationEncodingPresent_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (communicationEncodingPresentCase_ == 1) {
            communicationEncodingPresent_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string communication_encoding = 1;</code>
       */
      public com.google.protobuf.ByteString
          getCommunicationEncodingBytes() {
        java.lang.Object ref = "";
        if (communicationEncodingPresentCase_ == 1) {
          ref = communicationEncodingPresent_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (communicationEncodingPresentCase_ == 1) {
            communicationEncodingPresent_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string communication_encoding = 1;</code>
       */
      public Builder setCommunicationEncoding(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  communicationEncodingPresentCase_ = 1;
        communicationEncodingPresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string communication_encoding = 1;</code>
       */
      public Builder clearCommunicationEncoding() {
        if (communicationEncodingPresentCase_ == 1) {
          communicationEncodingPresentCase_ = 0;
          communicationEncodingPresent_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string communication_encoding = 1;</code>
       */
      public Builder setCommunicationEncodingBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        communicationEncodingPresentCase_ = 1;
        communicationEncodingPresent_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString seeds_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes seeds = 2;</code>
       */
      public com.google.protobuf.ByteString getSeeds() {
        return seeds_;
      }
      /**
       * <code>bytes seeds = 2;</code>
       */
      public Builder setSeeds(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        seeds_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes seeds = 2;</code>
       */
      public Builder clearSeeds() {
        
        seeds_ = getDefaultInstance().getSeeds();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:com.alibaba.otter.canal.protocol.Handshake)
    }

    // @@protoc_insertion_point(class_scope:com.alibaba.otter.canal.protocol.Handshake)
    private static final com.alibaba.otter.canal.protocol.AdminPacket.Handshake DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.alibaba.otter.canal.protocol.AdminPacket.Handshake();
    }

    public static com.alibaba.otter.canal.protocol.AdminPacket.Handshake getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.alibaba.otter.canal.protocol.AdminPacket.Handshake getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClientAuthOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.alibaba.otter.canal.protocol.ClientAuth)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string username = 1;</code>
     */
    java.lang.String getUsername();
    /**
     * <code>string username = 1;</code>
     */
    com.google.protobuf.ByteString
        getUsernameBytes();

    /**
     * <pre>
     * hashed password with seeds from Handshake message
     * </pre>
     *
     * <code>bytes password = 2;</code>
     */
    com.google.protobuf.ByteString getPassword();

    /**
     * <pre>
     * in seconds
     * </pre>
     *
     * <code>int32 net_read_timeout = 3;</code>
     */
    int getNetReadTimeout();

    /**
     * <pre>
     * in seconds
     * </pre>
     *
     * <code>int32 net_write_timeout = 4;</code>
     */
    int getNetWriteTimeout();

    public com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth.NetReadTimeoutPresentCase getNetReadTimeoutPresentCase();

    public com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth.NetWriteTimeoutPresentCase getNetWriteTimeoutPresentCase();
  }
  /**
   * <pre>
   * client authentication
   * </pre>
   *
   * Protobuf type {@code com.alibaba.otter.canal.protocol.ClientAuth}
   */
  public  static final class ClientAuth extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.alibaba.otter.canal.protocol.ClientAuth)
      ClientAuthOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClientAuth.newBuilder() to construct.
    private ClientAuth(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClientAuth() {
      username_ = "";
      password_ = com.google.protobuf.ByteString.EMPTY;
    }

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

              username_ = s;
              break;
            }
            case 18: {

              password_ = input.readBytes();
              break;
            }
            case 24: {
              netReadTimeoutPresentCase_ = 3;
              netReadTimeoutPresent_ = input.readInt32();
              break;
            }
            case 32: {
              netWriteTimeoutPresentCase_ = 4;
              netWriteTimeoutPresent_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ClientAuth_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ClientAuth_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth.class, com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth.Builder.class);
    }

    private int netReadTimeoutPresentCase_ = 0;
    private java.lang.Object netReadTimeoutPresent_;
    public enum NetReadTimeoutPresentCase
        implements com.google.protobuf.Internal.EnumLite {
      NET_READ_TIMEOUT(3),
      NETREADTIMEOUTPRESENT_NOT_SET(0);
      private final int value;
      private NetReadTimeoutPresentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static NetReadTimeoutPresentCase valueOf(int value) {
        return forNumber(value);
      }

      public static NetReadTimeoutPresentCase forNumber(int value) {
        switch (value) {
          case 3: return NET_READ_TIMEOUT;
          case 0: return NETREADTIMEOUTPRESENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public NetReadTimeoutPresentCase
    getNetReadTimeoutPresentCase() {
      return NetReadTimeoutPresentCase.forNumber(
          netReadTimeoutPresentCase_);
    }

    private int netWriteTimeoutPresentCase_ = 0;
    private java.lang.Object netWriteTimeoutPresent_;
    public enum NetWriteTimeoutPresentCase
        implements com.google.protobuf.Internal.EnumLite {
      NET_WRITE_TIMEOUT(4),
      NETWRITETIMEOUTPRESENT_NOT_SET(0);
      private final int value;
      private NetWriteTimeoutPresentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static NetWriteTimeoutPresentCase valueOf(int value) {
        return forNumber(value);
      }

      public static NetWriteTimeoutPresentCase forNumber(int value) {
        switch (value) {
          case 4: return NET_WRITE_TIMEOUT;
          case 0: return NETWRITETIMEOUTPRESENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public NetWriteTimeoutPresentCase
    getNetWriteTimeoutPresentCase() {
      return NetWriteTimeoutPresentCase.forNumber(
          netWriteTimeoutPresentCase_);
    }

    public static final int USERNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object username_;
    /**
     * <code>string username = 1;</code>
     */
    public java.lang.String getUsername() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        username_ = s;
        return s;
      }
    }
    /**
     * <code>string username = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUsernameBytes() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        username_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PASSWORD_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString password_;
    /**
     * <pre>
     * hashed password with seeds from Handshake message
     * </pre>
     *
     * <code>bytes password = 2;</code>
     */
    public com.google.protobuf.ByteString getPassword() {
      return password_;
    }

    public static final int NET_READ_TIMEOUT_FIELD_NUMBER = 3;
    /**
     * <pre>
     * in seconds
     * </pre>
     *
     * <code>int32 net_read_timeout = 3;</code>
     */
    public int getNetReadTimeout() {
      if (netReadTimeoutPresentCase_ == 3) {
        return (java.lang.Integer) netReadTimeoutPresent_;
      }
      return 0;
    }

    public static final int NET_WRITE_TIMEOUT_FIELD_NUMBER = 4;
    /**
     * <pre>
     * in seconds
     * </pre>
     *
     * <code>int32 net_write_timeout = 4;</code>
     */
    public int getNetWriteTimeout() {
      if (netWriteTimeoutPresentCase_ == 4) {
        return (java.lang.Integer) netWriteTimeoutPresent_;
      }
      return 0;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getUsernameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, username_);
      }
      if (!password_.isEmpty()) {
        output.writeBytes(2, password_);
      }
      if (netReadTimeoutPresentCase_ == 3) {
        output.writeInt32(
            3, (int)((java.lang.Integer) netReadTimeoutPresent_));
      }
      if (netWriteTimeoutPresentCase_ == 4) {
        output.writeInt32(
            4, (int)((java.lang.Integer) netWriteTimeoutPresent_));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getUsernameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, username_);
      }
      if (!password_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, password_);
      }
      if (netReadTimeoutPresentCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              3, (int)((java.lang.Integer) netReadTimeoutPresent_));
      }
      if (netWriteTimeoutPresentCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              4, (int)((java.lang.Integer) netWriteTimeoutPresent_));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth)) {
        return super.equals(obj);
      }
      com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth other = (com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth) obj;

      boolean result = true;
      result = result && getUsername()
          .equals(other.getUsername());
      result = result && getPassword()
          .equals(other.getPassword());
      result = result && getNetReadTimeoutPresentCase().equals(
          other.getNetReadTimeoutPresentCase());
      if (!result) return false;
      switch (netReadTimeoutPresentCase_) {
        case 3:
          result = result && (getNetReadTimeout()
              == other.getNetReadTimeout());
          break;
        case 0:
        default:
      }
      result = result && getNetWriteTimeoutPresentCase().equals(
          other.getNetWriteTimeoutPresentCase());
      if (!result) return false;
      switch (netWriteTimeoutPresentCase_) {
        case 4:
          result = result && (getNetWriteTimeout()
              == other.getNetWriteTimeout());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + USERNAME_FIELD_NUMBER;
      hash = (53 * hash) + getUsername().hashCode();
      hash = (37 * hash) + PASSWORD_FIELD_NUMBER;
      hash = (53 * hash) + getPassword().hashCode();
      switch (netReadTimeoutPresentCase_) {
        case 3:
          hash = (37 * hash) + NET_READ_TIMEOUT_FIELD_NUMBER;
          hash = (53 * hash) + getNetReadTimeout();
          break;
        case 0:
        default:
      }
      switch (netWriteTimeoutPresentCase_) {
        case 4:
          hash = (37 * hash) + NET_WRITE_TIMEOUT_FIELD_NUMBER;
          hash = (53 * hash) + getNetWriteTimeout();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * client authentication
     * </pre>
     *
     * Protobuf type {@code com.alibaba.otter.canal.protocol.ClientAuth}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.alibaba.otter.canal.protocol.ClientAuth)
        com.alibaba.otter.canal.protocol.AdminPacket.ClientAuthOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ClientAuth_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ClientAuth_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth.class, com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth.Builder.class);
      }

      // Construct using com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

        netReadTimeoutPresentCase_ = 0;
        netReadTimeoutPresent_ = null;
        netWriteTimeoutPresentCase_ = 0;
        netWriteTimeoutPresent_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ClientAuth_descriptor;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth getDefaultInstanceForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth.getDefaultInstance();
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth build() {
        com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth buildPartial() {
        com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth result = new com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth(this);
        result.username_ = username_;
        result.password_ = password_;
        if (netReadTimeoutPresentCase_ == 3) {
          result.netReadTimeoutPresent_ = netReadTimeoutPresent_;
        }
        if (netWriteTimeoutPresentCase_ == 4) {
          result.netWriteTimeoutPresent_ = netWriteTimeoutPresent_;
        }
        result.netReadTimeoutPresentCase_ = netReadTimeoutPresentCase_;
        result.netWriteTimeoutPresentCase_ = netWriteTimeoutPresentCase_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth other) {
        if (other == com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth.getDefaultInstance()) return this;
        if (!other.getUsername().isEmpty()) {
          username_ = other.username_;
          onChanged();
        }
        if (other.getPassword() != com.google.protobuf.ByteString.EMPTY) {
          setPassword(other.getPassword());
        }
        switch (other.getNetReadTimeoutPresentCase()) {
          case NET_READ_TIMEOUT: {
            setNetReadTimeout(other.getNetReadTimeout());
            break;
          }
          case NETREADTIMEOUTPRESENT_NOT_SET: {
            break;
          }
        }
        switch (other.getNetWriteTimeoutPresentCase()) {
          case NET_WRITE_TIMEOUT: {
            setNetWriteTimeout(other.getNetWriteTimeout());
            break;
          }
          case NETWRITETIMEOUTPRESENT_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int netReadTimeoutPresentCase_ = 0;
      private java.lang.Object netReadTimeoutPresent_;
      public NetReadTimeoutPresentCase
          getNetReadTimeoutPresentCase() {
        return NetReadTimeoutPresentCase.forNumber(
            netReadTimeoutPresentCase_);
      }

      public Builder clearNetReadTimeoutPresent() {
        netReadTimeoutPresentCase_ = 0;
        netReadTimeoutPresent_ = null;
        onChanged();
        return this;
      }

      private int netWriteTimeoutPresentCase_ = 0;
      private java.lang.Object netWriteTimeoutPresent_;
      public NetWriteTimeoutPresentCase
          getNetWriteTimeoutPresentCase() {
        return NetWriteTimeoutPresentCase.forNumber(
            netWriteTimeoutPresentCase_);
      }

      public Builder clearNetWriteTimeoutPresent() {
        netWriteTimeoutPresentCase_ = 0;
        netWriteTimeoutPresent_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object username_ = "";
      /**
       * <code>string username = 1;</code>
       */
      public java.lang.String getUsername() {
        java.lang.Object ref = username_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          username_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string username = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUsernameBytes() {
        java.lang.Object ref = username_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          username_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string username = 1;</code>
       */
      public Builder setUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        username_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string username = 1;</code>
       */
      public Builder clearUsername() {
        
        username_ = getDefaultInstance().getUsername();
        onChanged();
        return this;
      }
      /**
       * <code>string username = 1;</code>
       */
      public Builder setUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        username_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString password_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * hashed password with seeds from Handshake message
       * </pre>
       *
       * <code>bytes password = 2;</code>
       */
      public com.google.protobuf.ByteString getPassword() {
        return password_;
      }
      /**
       * <pre>
       * hashed password with seeds from Handshake message
       * </pre>
       *
       * <code>bytes password = 2;</code>
       */
      public Builder setPassword(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        password_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * hashed password with seeds from Handshake message
       * </pre>
       *
       * <code>bytes password = 2;</code>
       */
      public Builder clearPassword() {
        
        password_ = getDefaultInstance().getPassword();
        onChanged();
        return this;
      }

      /**
       * <pre>
       * in seconds
       * </pre>
       *
       * <code>int32 net_read_timeout = 3;</code>
       */
      public int getNetReadTimeout() {
        if (netReadTimeoutPresentCase_ == 3) {
          return (java.lang.Integer) netReadTimeoutPresent_;
        }
        return 0;
      }
      /**
       * <pre>
       * in seconds
       * </pre>
       *
       * <code>int32 net_read_timeout = 3;</code>
       */
      public Builder setNetReadTimeout(int value) {
        netReadTimeoutPresentCase_ = 3;
        netReadTimeoutPresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * in seconds
       * </pre>
       *
       * <code>int32 net_read_timeout = 3;</code>
       */
      public Builder clearNetReadTimeout() {
        if (netReadTimeoutPresentCase_ == 3) {
          netReadTimeoutPresentCase_ = 0;
          netReadTimeoutPresent_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <pre>
       * in seconds
       * </pre>
       *
       * <code>int32 net_write_timeout = 4;</code>
       */
      public int getNetWriteTimeout() {
        if (netWriteTimeoutPresentCase_ == 4) {
          return (java.lang.Integer) netWriteTimeoutPresent_;
        }
        return 0;
      }
      /**
       * <pre>
       * in seconds
       * </pre>
       *
       * <code>int32 net_write_timeout = 4;</code>
       */
      public Builder setNetWriteTimeout(int value) {
        netWriteTimeoutPresentCase_ = 4;
        netWriteTimeoutPresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * in seconds
       * </pre>
       *
       * <code>int32 net_write_timeout = 4;</code>
       */
      public Builder clearNetWriteTimeout() {
        if (netWriteTimeoutPresentCase_ == 4) {
          netWriteTimeoutPresentCase_ = 0;
          netWriteTimeoutPresent_ = null;
          onChanged();
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:com.alibaba.otter.canal.protocol.ClientAuth)
    }

    // @@protoc_insertion_point(class_scope:com.alibaba.otter.canal.protocol.ClientAuth)
    private static final com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth();
    }

    public static com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.alibaba.otter.canal.protocol.AdminPacket.ClientAuth getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServerAdminOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.alibaba.otter.canal.protocol.ServerAdmin)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * check/start/stop/restart/list
     * </pre>
     *
     * <code>string action = 1;</code>
     */
    java.lang.String getAction();
    /**
     * <pre>
     * check/start/stop/restart/list
     * </pre>
     *
     * <code>string action = 1;</code>
     */
    com.google.protobuf.ByteString
        getActionBytes();
  }
  /**
   * Protobuf type {@code com.alibaba.otter.canal.protocol.ServerAdmin}
   */
  public  static final class ServerAdmin extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.alibaba.otter.canal.protocol.ServerAdmin)
      ServerAdminOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServerAdmin.newBuilder() to construct.
    private ServerAdmin(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerAdmin() {
      action_ = "";
    }

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

              action_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin.class, com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin.Builder.class);
    }

    public static final int ACTION_FIELD_NUMBER = 1;
    private volatile java.lang.Object action_;
    /**
     * <pre>
     * check/start/stop/restart/list
     * </pre>
     *
     * <code>string action = 1;</code>
     */
    public java.lang.String getAction() {
      java.lang.Object ref = action_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        action_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * check/start/stop/restart/list
     * </pre>
     *
     * <code>string action = 1;</code>
     */
    public com.google.protobuf.ByteString
        getActionBytes() {
      java.lang.Object ref = action_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        action_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (!getActionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, action_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin)) {
        return super.equals(obj);
      }
      com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin other = (com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin) obj;

      boolean result = true;
      result = result && getAction()
          .equals(other.getAction());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.alibaba.otter.canal.protocol.ServerAdmin}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.alibaba.otter.canal.protocol.ServerAdmin)
        com.alibaba.otter.canal.protocol.AdminPacket.ServerAdminOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin.class, com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin.Builder.class);
      }

      // Construct using com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_descriptor;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin getDefaultInstanceForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin.getDefaultInstance();
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin build() {
        com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin buildPartial() {
        com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin result = new com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin(this);
        result.action_ = action_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin other) {
        if (other == com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin.getDefaultInstance()) return this;
        if (!other.getAction().isEmpty()) {
          action_ = other.action_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object action_ = "";
      /**
       * <pre>
       * check/start/stop/restart/list
       * </pre>
       *
       * <code>string action = 1;</code>
       */
      public java.lang.String getAction() {
        java.lang.Object ref = action_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          action_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * check/start/stop/restart/list
       * </pre>
       *
       * <code>string action = 1;</code>
       */
      public com.google.protobuf.ByteString
          getActionBytes() {
        java.lang.Object ref = action_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          action_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * check/start/stop/restart/list
       * </pre>
       *
       * <code>string action = 1;</code>
       */
      public Builder setAction(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        action_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * check/start/stop/restart/list
       * </pre>
       *
       * <code>string action = 1;</code>
       */
      public Builder clearAction() {
        
        action_ = getDefaultInstance().getAction();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * check/start/stop/restart/list
       * </pre>
       *
       * <code>string action = 1;</code>
       */
      public Builder setActionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        action_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:com.alibaba.otter.canal.protocol.ServerAdmin)
    }

    // @@protoc_insertion_point(class_scope:com.alibaba.otter.canal.protocol.ServerAdmin)
    private static final com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin();
    }

    public static com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.alibaba.otter.canal.protocol.AdminPacket.ServerAdmin getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InstanceAdminOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.alibaba.otter.canal.protocol.InstanceAdmin)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string destination = 1;</code>
     */
    java.lang.String getDestination();
    /**
     * <code>string destination = 1;</code>
     */
    com.google.protobuf.ByteString
        getDestinationBytes();

    /**
     * <pre>
     * check/start/stop/reload
     * </pre>
     *
     * <code>string action = 2;</code>
     */
    java.lang.String getAction();
    /**
     * <pre>
     * check/start/stop/reload
     * </pre>
     *
     * <code>string action = 2;</code>
     */
    com.google.protobuf.ByteString
        getActionBytes();
  }
  /**
   * Protobuf type {@code com.alibaba.otter.canal.protocol.InstanceAdmin}
   */
  public  static final class InstanceAdmin extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.alibaba.otter.canal.protocol.InstanceAdmin)
      InstanceAdminOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use InstanceAdmin.newBuilder() to construct.
    private InstanceAdmin(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InstanceAdmin() {
      destination_ = "";
      action_ = "";
    }

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

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

              action_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin.class, com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin.Builder.class);
    }

    public static final int DESTINATION_FIELD_NUMBER = 1;
    private volatile java.lang.Object destination_;
    /**
     * <code>string destination = 1;</code>
     */
    public java.lang.String getDestination() {
      java.lang.Object ref = destination_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        destination_ = s;
        return s;
      }
    }
    /**
     * <code>string destination = 1;</code>
     */
    public com.google.protobuf.ByteString
        getDestinationBytes() {
      java.lang.Object ref = destination_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        destination_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACTION_FIELD_NUMBER = 2;
    private volatile java.lang.Object action_;
    /**
     * <pre>
     * check/start/stop/reload
     * </pre>
     *
     * <code>string action = 2;</code>
     */
    public java.lang.String getAction() {
      java.lang.Object ref = action_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        action_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * check/start/stop/reload
     * </pre>
     *
     * <code>string action = 2;</code>
     */
    public com.google.protobuf.ByteString
        getActionBytes() {
      java.lang.Object ref = action_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        action_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getDestinationBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, destination_);
      }
      if (!getActionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, action_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getDestinationBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, destination_);
      }
      if (!getActionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, action_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin)) {
        return super.equals(obj);
      }
      com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin other = (com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin) obj;

      boolean result = true;
      result = result && getDestination()
          .equals(other.getDestination());
      result = result && getAction()
          .equals(other.getAction());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.alibaba.otter.canal.protocol.InstanceAdmin}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.alibaba.otter.canal.protocol.InstanceAdmin)
        com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdminOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin.class, com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin.Builder.class);
      }

      // Construct using com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        action_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_descriptor;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin getDefaultInstanceForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin.getDefaultInstance();
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin build() {
        com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin buildPartial() {
        com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin result = new com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin(this);
        result.destination_ = destination_;
        result.action_ = action_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin other) {
        if (other == com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin.getDefaultInstance()) return this;
        if (!other.getDestination().isEmpty()) {
          destination_ = other.destination_;
          onChanged();
        }
        if (!other.getAction().isEmpty()) {
          action_ = other.action_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object destination_ = "";
      /**
       * <code>string destination = 1;</code>
       */
      public java.lang.String getDestination() {
        java.lang.Object ref = destination_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          destination_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string destination = 1;</code>
       */
      public com.google.protobuf.ByteString
          getDestinationBytes() {
        java.lang.Object ref = destination_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          destination_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string destination = 1;</code>
       */
      public Builder setDestination(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        destination_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string destination = 1;</code>
       */
      public Builder clearDestination() {
        
        destination_ = getDefaultInstance().getDestination();
        onChanged();
        return this;
      }
      /**
       * <code>string destination = 1;</code>
       */
      public Builder setDestinationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        destination_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object action_ = "";
      /**
       * <pre>
       * check/start/stop/reload
       * </pre>
       *
       * <code>string action = 2;</code>
       */
      public java.lang.String getAction() {
        java.lang.Object ref = action_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          action_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * check/start/stop/reload
       * </pre>
       *
       * <code>string action = 2;</code>
       */
      public com.google.protobuf.ByteString
          getActionBytes() {
        java.lang.Object ref = action_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          action_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * check/start/stop/reload
       * </pre>
       *
       * <code>string action = 2;</code>
       */
      public Builder setAction(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        action_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * check/start/stop/reload
       * </pre>
       *
       * <code>string action = 2;</code>
       */
      public Builder clearAction() {
        
        action_ = getDefaultInstance().getAction();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * check/start/stop/reload
       * </pre>
       *
       * <code>string action = 2;</code>
       */
      public Builder setActionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        action_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:com.alibaba.otter.canal.protocol.InstanceAdmin)
    }

    // @@protoc_insertion_point(class_scope:com.alibaba.otter.canal.protocol.InstanceAdmin)
    private static final com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin();
    }

    public static com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.alibaba.otter.canal.protocol.AdminPacket.InstanceAdmin getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LogAdminOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.alibaba.otter.canal.protocol.LogAdmin)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * canal/instance
     * </pre>
     *
     * <code>string type = 1;</code>
     */
    java.lang.String getType();
    /**
     * <pre>
     * canal/instance
     * </pre>
     *
     * <code>string type = 1;</code>
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <code>string action = 2;</code>
     */
    java.lang.String getAction();
    /**
     * <code>string action = 2;</code>
     */
    com.google.protobuf.ByteString
        getActionBytes();

    /**
     * <code>string destination = 3;</code>
     */
    java.lang.String getDestination();
    /**
     * <code>string destination = 3;</code>
     */
    com.google.protobuf.ByteString
        getDestinationBytes();

    /**
     * <code>string file = 4;</code>
     */
    java.lang.String getFile();
    /**
     * <code>string file = 4;</code>
     */
    com.google.protobuf.ByteString
        getFileBytes();

    /**
     * <pre>
     * 默认tail 100行，最大不超过4MB
     * </pre>
     *
     * <code>int32 count = 5;</code>
     */
    int getCount();

    public com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.DestinationPresentCase getDestinationPresentCase();

    public com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.FilePresentCase getFilePresentCase();

    public com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.CountPresentCase getCountPresentCase();
  }
  /**
   * Protobuf type {@code com.alibaba.otter.canal.protocol.LogAdmin}
   */
  public  static final class LogAdmin extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.alibaba.otter.canal.protocol.LogAdmin)
      LogAdminOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LogAdmin.newBuilder() to construct.
    private LogAdmin(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LogAdmin() {
      type_ = "";
      action_ = "";
    }

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

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

              action_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              destinationPresentCase_ = 3;
              destinationPresent_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();
              filePresentCase_ = 4;
              filePresent_ = s;
              break;
            }
            case 40: {
              countPresentCase_ = 5;
              countPresent_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_LogAdmin_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_LogAdmin_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.class, com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.Builder.class);
    }

    private int destinationPresentCase_ = 0;
    private java.lang.Object destinationPresent_;
    public enum DestinationPresentCase
        implements com.google.protobuf.Internal.EnumLite {
      DESTINATION(3),
      DESTINATIONPRESENT_NOT_SET(0);
      private final int value;
      private DestinationPresentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static DestinationPresentCase valueOf(int value) {
        return forNumber(value);
      }

      public static DestinationPresentCase forNumber(int value) {
        switch (value) {
          case 3: return DESTINATION;
          case 0: return DESTINATIONPRESENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public DestinationPresentCase
    getDestinationPresentCase() {
      return DestinationPresentCase.forNumber(
          destinationPresentCase_);
    }

    private int filePresentCase_ = 0;
    private java.lang.Object filePresent_;
    public enum FilePresentCase
        implements com.google.protobuf.Internal.EnumLite {
      FILE(4),
      FILEPRESENT_NOT_SET(0);
      private final int value;
      private FilePresentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static FilePresentCase valueOf(int value) {
        return forNumber(value);
      }

      public static FilePresentCase forNumber(int value) {
        switch (value) {
          case 4: return FILE;
          case 0: return FILEPRESENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public FilePresentCase
    getFilePresentCase() {
      return FilePresentCase.forNumber(
          filePresentCase_);
    }

    private int countPresentCase_ = 0;
    private java.lang.Object countPresent_;
    public enum CountPresentCase
        implements com.google.protobuf.Internal.EnumLite {
      COUNT(5),
      COUNTPRESENT_NOT_SET(0);
      private final int value;
      private CountPresentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static CountPresentCase valueOf(int value) {
        return forNumber(value);
      }

      public static CountPresentCase forNumber(int value) {
        switch (value) {
          case 5: return COUNT;
          case 0: return COUNTPRESENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public CountPresentCase
    getCountPresentCase() {
      return CountPresentCase.forNumber(
          countPresentCase_);
    }

    public static final int TYPE_FIELD_NUMBER = 1;
    private volatile java.lang.Object type_;
    /**
     * <pre>
     * canal/instance
     * </pre>
     *
     * <code>string type = 1;</code>
     */
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        type_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * canal/instance
     * </pre>
     *
     * <code>string type = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACTION_FIELD_NUMBER = 2;
    private volatile java.lang.Object action_;
    /**
     * <code>string action = 2;</code>
     */
    public java.lang.String getAction() {
      java.lang.Object ref = action_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        action_ = s;
        return s;
      }
    }
    /**
     * <code>string action = 2;</code>
     */
    public com.google.protobuf.ByteString
        getActionBytes() {
      java.lang.Object ref = action_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        action_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESTINATION_FIELD_NUMBER = 3;
    /**
     * <code>string destination = 3;</code>
     */
    public java.lang.String getDestination() {
      java.lang.Object ref = "";
      if (destinationPresentCase_ == 3) {
        ref = destinationPresent_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (destinationPresentCase_ == 3) {
          destinationPresent_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string destination = 3;</code>
     */
    public com.google.protobuf.ByteString
        getDestinationBytes() {
      java.lang.Object ref = "";
      if (destinationPresentCase_ == 3) {
        ref = destinationPresent_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (destinationPresentCase_ == 3) {
          destinationPresent_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FILE_FIELD_NUMBER = 4;
    /**
     * <code>string file = 4;</code>
     */
    public java.lang.String getFile() {
      java.lang.Object ref = "";
      if (filePresentCase_ == 4) {
        ref = filePresent_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (filePresentCase_ == 4) {
          filePresent_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string file = 4;</code>
     */
    public com.google.protobuf.ByteString
        getFileBytes() {
      java.lang.Object ref = "";
      if (filePresentCase_ == 4) {
        ref = filePresent_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (filePresentCase_ == 4) {
          filePresent_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COUNT_FIELD_NUMBER = 5;
    /**
     * <pre>
     * 默认tail 100行，最大不超过4MB
     * </pre>
     *
     * <code>int32 count = 5;</code>
     */
    public int getCount() {
      if (countPresentCase_ == 5) {
        return (java.lang.Integer) countPresent_;
      }
      return 0;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, type_);
      }
      if (!getActionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, action_);
      }
      if (destinationPresentCase_ == 3) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, destinationPresent_);
      }
      if (filePresentCase_ == 4) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, filePresent_);
      }
      if (countPresentCase_ == 5) {
        output.writeInt32(
            5, (int)((java.lang.Integer) countPresent_));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, type_);
      }
      if (!getActionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, action_);
      }
      if (destinationPresentCase_ == 3) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, destinationPresent_);
      }
      if (filePresentCase_ == 4) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, filePresent_);
      }
      if (countPresentCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              5, (int)((java.lang.Integer) countPresent_));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin)) {
        return super.equals(obj);
      }
      com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin other = (com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin) obj;

      boolean result = true;
      result = result && getType()
          .equals(other.getType());
      result = result && getAction()
          .equals(other.getAction());
      result = result && getDestinationPresentCase().equals(
          other.getDestinationPresentCase());
      if (!result) return false;
      switch (destinationPresentCase_) {
        case 3:
          result = result && getDestination()
              .equals(other.getDestination());
          break;
        case 0:
        default:
      }
      result = result && getFilePresentCase().equals(
          other.getFilePresentCase());
      if (!result) return false;
      switch (filePresentCase_) {
        case 4:
          result = result && getFile()
              .equals(other.getFile());
          break;
        case 0:
        default:
      }
      result = result && getCountPresentCase().equals(
          other.getCountPresentCase());
      if (!result) return false;
      switch (countPresentCase_) {
        case 5:
          result = result && (getCount()
              == other.getCount());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType().hashCode();
      hash = (37 * hash) + ACTION_FIELD_NUMBER;
      hash = (53 * hash) + getAction().hashCode();
      switch (destinationPresentCase_) {
        case 3:
          hash = (37 * hash) + DESTINATION_FIELD_NUMBER;
          hash = (53 * hash) + getDestination().hashCode();
          break;
        case 0:
        default:
      }
      switch (filePresentCase_) {
        case 4:
          hash = (37 * hash) + FILE_FIELD_NUMBER;
          hash = (53 * hash) + getFile().hashCode();
          break;
        case 0:
        default:
      }
      switch (countPresentCase_) {
        case 5:
          hash = (37 * hash) + COUNT_FIELD_NUMBER;
          hash = (53 * hash) + getCount();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.alibaba.otter.canal.protocol.LogAdmin}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.alibaba.otter.canal.protocol.LogAdmin)
        com.alibaba.otter.canal.protocol.AdminPacket.LogAdminOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_LogAdmin_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_LogAdmin_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.class, com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.Builder.class);
      }

      // Construct using com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        action_ = "";

        destinationPresentCase_ = 0;
        destinationPresent_ = null;
        filePresentCase_ = 0;
        filePresent_ = null;
        countPresentCase_ = 0;
        countPresent_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.internal_static_com_alibaba_otter_canal_protocol_LogAdmin_descriptor;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin getDefaultInstanceForType() {
        return com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.getDefaultInstance();
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin build() {
        com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin buildPartial() {
        com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin result = new com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin(this);
        result.type_ = type_;
        result.action_ = action_;
        if (destinationPresentCase_ == 3) {
          result.destinationPresent_ = destinationPresent_;
        }
        if (filePresentCase_ == 4) {
          result.filePresent_ = filePresent_;
        }
        if (countPresentCase_ == 5) {
          result.countPresent_ = countPresent_;
        }
        result.destinationPresentCase_ = destinationPresentCase_;
        result.filePresentCase_ = filePresentCase_;
        result.countPresentCase_ = countPresentCase_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin other) {
        if (other == com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin.getDefaultInstance()) return this;
        if (!other.getType().isEmpty()) {
          type_ = other.type_;
          onChanged();
        }
        if (!other.getAction().isEmpty()) {
          action_ = other.action_;
          onChanged();
        }
        switch (other.getDestinationPresentCase()) {
          case DESTINATION: {
            destinationPresentCase_ = 3;
            destinationPresent_ = other.destinationPresent_;
            onChanged();
            break;
          }
          case DESTINATIONPRESENT_NOT_SET: {
            break;
          }
        }
        switch (other.getFilePresentCase()) {
          case FILE: {
            filePresentCase_ = 4;
            filePresent_ = other.filePresent_;
            onChanged();
            break;
          }
          case FILEPRESENT_NOT_SET: {
            break;
          }
        }
        switch (other.getCountPresentCase()) {
          case COUNT: {
            setCount(other.getCount());
            break;
          }
          case COUNTPRESENT_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int destinationPresentCase_ = 0;
      private java.lang.Object destinationPresent_;
      public DestinationPresentCase
          getDestinationPresentCase() {
        return DestinationPresentCase.forNumber(
            destinationPresentCase_);
      }

      public Builder clearDestinationPresent() {
        destinationPresentCase_ = 0;
        destinationPresent_ = null;
        onChanged();
        return this;
      }

      private int filePresentCase_ = 0;
      private java.lang.Object filePresent_;
      public FilePresentCase
          getFilePresentCase() {
        return FilePresentCase.forNumber(
            filePresentCase_);
      }

      public Builder clearFilePresent() {
        filePresentCase_ = 0;
        filePresent_ = null;
        onChanged();
        return this;
      }

      private int countPresentCase_ = 0;
      private java.lang.Object countPresent_;
      public CountPresentCase
          getCountPresentCase() {
        return CountPresentCase.forNumber(
            countPresentCase_);
      }

      public Builder clearCountPresent() {
        countPresentCase_ = 0;
        countPresent_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object type_ = "";
      /**
       * <pre>
       * canal/instance
       * </pre>
       *
       * <code>string type = 1;</code>
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          type_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * canal/instance
       * </pre>
       *
       * <code>string type = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * canal/instance
       * </pre>
       *
       * <code>string type = 1;</code>
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * canal/instance
       * </pre>
       *
       * <code>string type = 1;</code>
       */
      public Builder clearType() {
        
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * canal/instance
       * </pre>
       *
       * <code>string type = 1;</code>
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        type_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object action_ = "";
      /**
       * <code>string action = 2;</code>
       */
      public java.lang.String getAction() {
        java.lang.Object ref = action_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          action_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string action = 2;</code>
       */
      public com.google.protobuf.ByteString
          getActionBytes() {
        java.lang.Object ref = action_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          action_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string action = 2;</code>
       */
      public Builder setAction(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        action_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string action = 2;</code>
       */
      public Builder clearAction() {
        
        action_ = getDefaultInstance().getAction();
        onChanged();
        return this;
      }
      /**
       * <code>string action = 2;</code>
       */
      public Builder setActionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        action_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>string destination = 3;</code>
       */
      public java.lang.String getDestination() {
        java.lang.Object ref = "";
        if (destinationPresentCase_ == 3) {
          ref = destinationPresent_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (destinationPresentCase_ == 3) {
            destinationPresent_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string destination = 3;</code>
       */
      public com.google.protobuf.ByteString
          getDestinationBytes() {
        java.lang.Object ref = "";
        if (destinationPresentCase_ == 3) {
          ref = destinationPresent_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (destinationPresentCase_ == 3) {
            destinationPresent_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string destination = 3;</code>
       */
      public Builder setDestination(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  destinationPresentCase_ = 3;
        destinationPresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string destination = 3;</code>
       */
      public Builder clearDestination() {
        if (destinationPresentCase_ == 3) {
          destinationPresentCase_ = 0;
          destinationPresent_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string destination = 3;</code>
       */
      public Builder setDestinationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        destinationPresentCase_ = 3;
        destinationPresent_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>string file = 4;</code>
       */
      public java.lang.String getFile() {
        java.lang.Object ref = "";
        if (filePresentCase_ == 4) {
          ref = filePresent_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (filePresentCase_ == 4) {
            filePresent_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string file = 4;</code>
       */
      public com.google.protobuf.ByteString
          getFileBytes() {
        java.lang.Object ref = "";
        if (filePresentCase_ == 4) {
          ref = filePresent_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (filePresentCase_ == 4) {
            filePresent_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string file = 4;</code>
       */
      public Builder setFile(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  filePresentCase_ = 4;
        filePresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string file = 4;</code>
       */
      public Builder clearFile() {
        if (filePresentCase_ == 4) {
          filePresentCase_ = 0;
          filePresent_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string file = 4;</code>
       */
      public Builder setFileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        filePresentCase_ = 4;
        filePresent_ = value;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * 默认tail 100行，最大不超过4MB
       * </pre>
       *
       * <code>int32 count = 5;</code>
       */
      public int getCount() {
        if (countPresentCase_ == 5) {
          return (java.lang.Integer) countPresent_;
        }
        return 0;
      }
      /**
       * <pre>
       * 默认tail 100行，最大不超过4MB
       * </pre>
       *
       * <code>int32 count = 5;</code>
       */
      public Builder setCount(int value) {
        countPresentCase_ = 5;
        countPresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 默认tail 100行，最大不超过4MB
       * </pre>
       *
       * <code>int32 count = 5;</code>
       */
      public Builder clearCount() {
        if (countPresentCase_ == 5) {
          countPresentCase_ = 0;
          countPresent_ = null;
          onChanged();
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:com.alibaba.otter.canal.protocol.LogAdmin)
    }

    // @@protoc_insertion_point(class_scope:com.alibaba.otter.canal.protocol.LogAdmin)
    private static final com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin();
    }

    public static com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.alibaba.otter.canal.protocol.AdminPacket.LogAdmin getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_alibaba_otter_canal_protocol_Packet_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_alibaba_otter_canal_protocol_Packet_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_alibaba_otter_canal_protocol_Ack_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_alibaba_otter_canal_protocol_Ack_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_alibaba_otter_canal_protocol_Handshake_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_alibaba_otter_canal_protocol_Handshake_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_alibaba_otter_canal_protocol_ClientAuth_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_alibaba_otter_canal_protocol_ClientAuth_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_alibaba_otter_canal_protocol_LogAdmin_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_alibaba_otter_canal_protocol_LogAdmin_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\023AdminProtocol.proto\022 com.alibaba.otter" +
      ".canal.protocol\"\250\001\n\006Packet\022\026\n\014magic_numb" +
      "er\030\001 \001(\005H\000\022\021\n\007version\030\002 \001(\005H\001\022:\n\004type\030\003 " +
      "\001(\0162,.com.alibaba.otter.canal.protocol.P" +
      "acketType\022\014\n\004body\030\004 \001(\014B\026\n\024magic_number_" +
      "presentB\021\n\017version_present\"<\n\003Ack\022\016\n\004cod" +
      "e\030\001 \001(\005H\000\022\017\n\007message\030\002 \001(\tB\024\n\022error_code" +
      "_present\"^\n\tHandshake\022 \n\026communication_e" +
      "ncoding\030\001 \001(\tH\000\022\r\n\005seeds\030\002 \001(\014B \n\036commun" +
      "ication_encoding_present\"\242\001\n\nClientAuth\022" +
      "\020\n\010username\030\001 \001(\t\022\020\n\010password\030\002 \001(\014\022\032\n\020n" +
      "et_read_timeout\030\003 \001(\005H\000\022\033\n\021net_write_tim" +
      "eout\030\004 \001(\005H\001B\032\n\030net_read_timeout_present" +
      "B\033\n\031net_write_timeout_present\"\035\n\013ServerA" +
      "dmin\022\016\n\006action\030\001 \001(\t\"4\n\rInstanceAdmin\022\023\n" +
      "\013destination\030\001 \001(\t\022\016\n\006action\030\002 \001(\t\"\230\001\n\010L" +
      "ogAdmin\022\014\n\004type\030\001 \001(\t\022\016\n\006action\030\002 \001(\t\022\025\n" +
      "\013destination\030\003 \001(\tH\000\022\016\n\004file\030\004 \001(\tH\001\022\017\n\005" +
      "count\030\005 \001(\005H\002B\025\n\023destination_presentB\016\n\014" +
      "file_presentB\017\n\rcount_present*\202\001\n\nPacket" +
      "Type\022\037\n\033PACKAGETYPECOMPATIBLEPROTO2\020\000\022\r\n" +
      "\tHANDSHAKE\020\001\022\030\n\024CLIENTAUTHENTICATION\020\002\022\007" +
      "\n\003ACK\020\003\022\n\n\006SERVER\020\004\022\014\n\010INSTANCE\020\005\022\007\n\003LOG" +
      "\020\006B1\n com.alibaba.otter.canal.protocolB\013" +
      "AdminPacketH\001b\006proto3"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_com_alibaba_otter_canal_protocol_Packet_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_com_alibaba_otter_canal_protocol_Packet_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_alibaba_otter_canal_protocol_Packet_descriptor,
        new java.lang.String[] { "MagicNumber", "Version", "Type", "Body", "MagicNumberPresent", "VersionPresent", });
    internal_static_com_alibaba_otter_canal_protocol_Ack_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_com_alibaba_otter_canal_protocol_Ack_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_alibaba_otter_canal_protocol_Ack_descriptor,
        new java.lang.String[] { "Code", "Message", "ErrorCodePresent", });
    internal_static_com_alibaba_otter_canal_protocol_Handshake_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_com_alibaba_otter_canal_protocol_Handshake_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_alibaba_otter_canal_protocol_Handshake_descriptor,
        new java.lang.String[] { "CommunicationEncoding", "Seeds", "CommunicationEncodingPresent", });
    internal_static_com_alibaba_otter_canal_protocol_ClientAuth_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_com_alibaba_otter_canal_protocol_ClientAuth_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_alibaba_otter_canal_protocol_ClientAuth_descriptor,
        new java.lang.String[] { "Username", "Password", "NetReadTimeout", "NetWriteTimeout", "NetReadTimeoutPresent", "NetWriteTimeoutPresent", });
    internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_alibaba_otter_canal_protocol_ServerAdmin_descriptor,
        new java.lang.String[] { "Action", });
    internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_alibaba_otter_canal_protocol_InstanceAdmin_descriptor,
        new java.lang.String[] { "Destination", "Action", });
    internal_static_com_alibaba_otter_canal_protocol_LogAdmin_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_com_alibaba_otter_canal_protocol_LogAdmin_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_alibaba_otter_canal_protocol_LogAdmin_descriptor,
        new java.lang.String[] { "Type", "Action", "Destination", "File", "Count", "DestinationPresent", "FilePresent", "CountPresent", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
