yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass Maven / Gradle / Ivy
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: yandex/cloud/mdb/kafka/v1/connector.proto
package yandex.cloud.api.mdb.kafka.v1;
public final class ConnectorOuterClass {
  private ConnectorOuterClass() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface ConnectorSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ConnectorSpec)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Name of the connector.
     * 
     *
     * string name = 1;
     * @return The name.
     */
    java.lang.String getName();
    /**
     * 
     * Name of the connector.
     * 
     *
     * string name = 1;
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     * @return Whether the tasksMax field is set.
     */
    boolean hasTasksMax();
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     * @return The tasksMax.
     */
    com.google.protobuf.Int64Value getTasksMax();
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     */
    com.google.protobuf.Int64ValueOrBuilder getTasksMaxOrBuilder();
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    int getPropertiesCount();
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    boolean containsProperties(
        java.lang.String key);
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map
    getProperties();
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    java.util.Map
    getPropertiesMap();
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    java.lang.String getPropertiesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    java.lang.String getPropertiesOrThrow(
        java.lang.String key);
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     * @return Whether the connectorConfigMirrormaker field is set.
     */
    boolean hasConnectorConfigMirrormaker();
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     * @return The connectorConfigMirrormaker.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec getConnectorConfigMirrormaker();
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder getConnectorConfigMirrormakerOrBuilder();
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     * @return Whether the connectorConfigS3Sink field is set.
     */
    boolean hasConnectorConfigS3Sink();
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     * @return The connectorConfigS3Sink.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec getConnectorConfigS3Sink();
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpecOrBuilder getConnectorConfigS3SinkOrBuilder();
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec.ConnectorConfigCase getConnectorConfigCase();
  }
  /**
   * 
   * An object that represents an Apache Kafka® connector.
   * See [the documentation](/docs/managed-kafka/concepts/connectors) for details.
   * 
   *
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ConnectorSpec}
   */
  public static final class ConnectorSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ConnectorSpec)
      ConnectorSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectorSpec.newBuilder() to construct.
    private ConnectorSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ConnectorSpec() {
      name_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectorSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectorSpec(
        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();
              name_ = s;
              break;
            }
            case 18: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (tasksMax_ != null) {
                subBuilder = tasksMax_.toBuilder();
              }
              tasksMax_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tasksMax_);
                tasksMax_ = subBuilder.buildPartial();
              }
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                properties_ = com.google.protobuf.MapField.newMapField(
                    PropertiesDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry
              properties__ = input.readMessage(
                  PropertiesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              properties_.getMutableMap().put(
                  properties__.getKey(), properties__.getValue());
              break;
            }
            case 82: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder subBuilder = null;
              if (connectorConfigCase_ == 10) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_).toBuilder();
              }
              connectorConfig_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_);
                connectorConfig_ = subBuilder.buildPartial();
              }
              connectorConfigCase_ = 10;
              break;
            }
            case 90: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.Builder subBuilder = null;
              if (connectorConfigCase_ == 11) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_).toBuilder();
              }
              connectorConfig_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_);
                connectorConfig_ = subBuilder.buildPartial();
              }
              connectorConfigCase_ = 11;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_descriptor;
    }
    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 3:
          return internalGetProperties();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec.Builder.class);
    }
    private int connectorConfigCase_ = 0;
    private java.lang.Object connectorConfig_;
    public enum ConnectorConfigCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      CONNECTOR_CONFIG_MIRRORMAKER(10),
      CONNECTOR_CONFIG_S3_SINK(11),
      CONNECTORCONFIG_NOT_SET(0);
      private final int value;
      private ConnectorConfigCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ConnectorConfigCase valueOf(int value) {
        return forNumber(value);
      }
      public static ConnectorConfigCase forNumber(int value) {
        switch (value) {
          case 10: return CONNECTOR_CONFIG_MIRRORMAKER;
          case 11: return CONNECTOR_CONFIG_S3_SINK;
          case 0: return CONNECTORCONFIG_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public ConnectorConfigCase
    getConnectorConfigCase() {
      return ConnectorConfigCase.forNumber(
          connectorConfigCase_);
    }
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * 
     * Name of the connector.
     * 
     *
     * string name = 1;
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * 
     * Name of the connector.
     * 
     *
     * string name = 1;
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int TASKS_MAX_FIELD_NUMBER = 2;
    private com.google.protobuf.Int64Value tasksMax_;
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     * @return Whether the tasksMax field is set.
     */
    @java.lang.Override
    public boolean hasTasksMax() {
      return tasksMax_ != null;
    }
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     * @return The tasksMax.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getTasksMax() {
      return tasksMax_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : tasksMax_;
    }
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getTasksMaxOrBuilder() {
      return getTasksMax();
    }
    public static final int PROPERTIES_FIELD_NUMBER = 3;
    private static final class PropertiesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .newDefaultInstance(
                  yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_PropertiesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> properties_;
    private com.google.protobuf.MapField
    internalGetProperties() {
      if (properties_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            PropertiesDefaultEntryHolder.defaultEntry);
      }
      return properties_;
    }
    public int getPropertiesCount() {
      return internalGetProperties().getMap().size();
    }
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    @java.lang.Override
    public boolean containsProperties(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetProperties().getMap().containsKey(key);
    }
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map getProperties() {
      return getPropertiesMap();
    }
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    @java.lang.Override
    public java.util.Map getPropertiesMap() {
      return internalGetProperties().getMap();
    }
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    @java.lang.Override
    public java.lang.String getPropertiesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetProperties().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    @java.lang.Override
    public java.lang.String getPropertiesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetProperties().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }
    public static final int CONNECTOR_CONFIG_MIRRORMAKER_FIELD_NUMBER = 10;
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     * @return Whether the connectorConfigMirrormaker field is set.
     */
    @java.lang.Override
    public boolean hasConnectorConfigMirrormaker() {
      return connectorConfigCase_ == 10;
    }
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     * @return The connectorConfigMirrormaker.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec getConnectorConfigMirrormaker() {
      if (connectorConfigCase_ == 10) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
    }
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder getConnectorConfigMirrormakerOrBuilder() {
      if (connectorConfigCase_ == 10) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
    }
    public static final int CONNECTOR_CONFIG_S3_SINK_FIELD_NUMBER = 11;
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     * @return Whether the connectorConfigS3Sink field is set.
     */
    @java.lang.Override
    public boolean hasConnectorConfigS3Sink() {
      return connectorConfigCase_ == 11;
    }
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     * @return The connectorConfigS3Sink.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec getConnectorConfigS3Sink() {
      if (connectorConfigCase_ == 11) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.getDefaultInstance();
    }
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpecOrBuilder getConnectorConfigS3SinkOrBuilder() {
      if (connectorConfigCase_ == 11) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (tasksMax_ != null) {
        output.writeMessage(2, getTasksMax());
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetProperties(),
          PropertiesDefaultEntryHolder.defaultEntry,
          3);
      if (connectorConfigCase_ == 10) {
        output.writeMessage(10, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_);
      }
      if (connectorConfigCase_ == 11) {
        output.writeMessage(11, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (tasksMax_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTasksMax());
      }
      for (java.util.Map.Entry entry
           : internalGetProperties().getMap().entrySet()) {
        com.google.protobuf.MapEntry
        properties__ = PropertiesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, properties__);
      }
      if (connectorConfigCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_);
      }
      if (connectorConfigCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec) obj;
      if (!getName()
          .equals(other.getName())) return false;
      if (hasTasksMax() != other.hasTasksMax()) return false;
      if (hasTasksMax()) {
        if (!getTasksMax()
            .equals(other.getTasksMax())) return false;
      }
      if (!internalGetProperties().equals(
          other.internalGetProperties())) return false;
      if (!getConnectorConfigCase().equals(other.getConnectorConfigCase())) return false;
      switch (connectorConfigCase_) {
        case 10:
          if (!getConnectorConfigMirrormaker()
              .equals(other.getConnectorConfigMirrormaker())) return false;
          break;
        case 11:
          if (!getConnectorConfigS3Sink()
              .equals(other.getConnectorConfigS3Sink())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (hasTasksMax()) {
        hash = (37 * hash) + TASKS_MAX_FIELD_NUMBER;
        hash = (53 * hash) + getTasksMax().hashCode();
      }
      if (!internalGetProperties().getMap().isEmpty()) {
        hash = (37 * hash) + PROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetProperties().hashCode();
      }
      switch (connectorConfigCase_) {
        case 10:
          hash = (37 * hash) + CONNECTOR_CONFIG_MIRRORMAKER_FIELD_NUMBER;
          hash = (53 * hash) + getConnectorConfigMirrormaker().hashCode();
          break;
        case 11:
          hash = (37 * hash) + CONNECTOR_CONFIG_S3_SINK_FIELD_NUMBER;
          hash = (53 * hash) + getConnectorConfigS3Sink().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec 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;
    }
    /**
     * 
     * An object that represents an Apache Kafka® connector.
     * See [the documentation](/docs/managed-kafka/concepts/connectors) for details.
     * 
     *
     * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ConnectorSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ConnectorSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_descriptor;
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 3:
            return internalGetProperties();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 3:
            return internalGetMutableProperties();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";
        if (tasksMaxBuilder_ == null) {
          tasksMax_ = null;
        } else {
          tasksMax_ = null;
          tasksMaxBuilder_ = null;
        }
        internalGetMutableProperties().clear();
        connectorConfigCase_ = 0;
        connectorConfig_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        if (tasksMaxBuilder_ == null) {
          result.tasksMax_ = tasksMax_;
        } else {
          result.tasksMax_ = tasksMaxBuilder_.build();
        }
        result.properties_ = internalGetProperties();
        result.properties_.makeImmutable();
        if (connectorConfigCase_ == 10) {
          if (connectorConfigMirrormakerBuilder_ == null) {
            result.connectorConfig_ = connectorConfig_;
          } else {
            result.connectorConfig_ = connectorConfigMirrormakerBuilder_.build();
          }
        }
        if (connectorConfigCase_ == 11) {
          if (connectorConfigS3SinkBuilder_ == null) {
            result.connectorConfig_ = connectorConfig_;
          } else {
            result.connectorConfig_ = connectorConfigS3SinkBuilder_.build();
          }
        }
        result.connectorConfigCase_ = connectorConfigCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.hasTasksMax()) {
          mergeTasksMax(other.getTasksMax());
        }
        internalGetMutableProperties().mergeFrom(
            other.internalGetProperties());
        switch (other.getConnectorConfigCase()) {
          case CONNECTOR_CONFIG_MIRRORMAKER: {
            mergeConnectorConfigMirrormaker(other.getConnectorConfigMirrormaker());
            break;
          }
          case CONNECTOR_CONFIG_S3_SINK: {
            mergeConnectorConfigS3Sink(other.getConnectorConfigS3Sink());
            break;
          }
          case CONNECTORCONFIG_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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int connectorConfigCase_ = 0;
      private java.lang.Object connectorConfig_;
      public ConnectorConfigCase
          getConnectorConfigCase() {
        return ConnectorConfigCase.forNumber(
            connectorConfigCase_);
      }
      public Builder clearConnectorConfig() {
        connectorConfigCase_ = 0;
        connectorConfig_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value tasksMax_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> tasksMaxBuilder_;
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       * @return Whether the tasksMax field is set.
       */
      public boolean hasTasksMax() {
        return tasksMaxBuilder_ != null || tasksMax_ != null;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       * @return The tasksMax.
       */
      public com.google.protobuf.Int64Value getTasksMax() {
        if (tasksMaxBuilder_ == null) {
          return tasksMax_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : tasksMax_;
        } else {
          return tasksMaxBuilder_.getMessage();
        }
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public Builder setTasksMax(com.google.protobuf.Int64Value value) {
        if (tasksMaxBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tasksMax_ = value;
          onChanged();
        } else {
          tasksMaxBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public Builder setTasksMax(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (tasksMaxBuilder_ == null) {
          tasksMax_ = builderForValue.build();
          onChanged();
        } else {
          tasksMaxBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public Builder mergeTasksMax(com.google.protobuf.Int64Value value) {
        if (tasksMaxBuilder_ == null) {
          if (tasksMax_ != null) {
            tasksMax_ =
              com.google.protobuf.Int64Value.newBuilder(tasksMax_).mergeFrom(value).buildPartial();
          } else {
            tasksMax_ = value;
          }
          onChanged();
        } else {
          tasksMaxBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public Builder clearTasksMax() {
        if (tasksMaxBuilder_ == null) {
          tasksMax_ = null;
          onChanged();
        } else {
          tasksMax_ = null;
          tasksMaxBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public com.google.protobuf.Int64Value.Builder getTasksMaxBuilder() {
        
        onChanged();
        return getTasksMaxFieldBuilder().getBuilder();
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public com.google.protobuf.Int64ValueOrBuilder getTasksMaxOrBuilder() {
        if (tasksMaxBuilder_ != null) {
          return tasksMaxBuilder_.getMessageOrBuilder();
        } else {
          return tasksMax_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : tasksMax_;
        }
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getTasksMaxFieldBuilder() {
        if (tasksMaxBuilder_ == null) {
          tasksMaxBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getTasksMax(),
                  getParentForChildren(),
                  isClean());
          tasksMax_ = null;
        }
        return tasksMaxBuilder_;
      }
      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> properties_;
      private com.google.protobuf.MapField
      internalGetProperties() {
        if (properties_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              PropertiesDefaultEntryHolder.defaultEntry);
        }
        return properties_;
      }
      private com.google.protobuf.MapField
      internalGetMutableProperties() {
        onChanged();;
        if (properties_ == null) {
          properties_ = com.google.protobuf.MapField.newMapField(
              PropertiesDefaultEntryHolder.defaultEntry);
        }
        if (!properties_.isMutable()) {
          properties_ = properties_.copy();
        }
        return properties_;
      }
      public int getPropertiesCount() {
        return internalGetProperties().getMap().size();
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      @java.lang.Override
      public boolean containsProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetProperties().getMap().containsKey(key);
      }
      /**
       * Use {@link #getPropertiesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map getProperties() {
        return getPropertiesMap();
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      @java.lang.Override
      public java.util.Map getPropertiesMap() {
        return internalGetProperties().getMap();
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      @java.lang.Override
      public java.lang.String getPropertiesOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetProperties().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      @java.lang.Override
      public java.lang.String getPropertiesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetProperties().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearProperties() {
        internalGetMutableProperties().getMutableMap()
            .clear();
        return this;
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      public Builder removeProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableProperties().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map
      getMutableProperties() {
        return internalGetMutableProperties().getMutableMap();
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      public Builder putProperties(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) {
  throw new NullPointerException("map value");
}
        internalGetMutableProperties().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      public Builder putAllProperties(
          java.util.Map values) {
        internalGetMutableProperties().getMutableMap()
            .putAll(values);
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder> connectorConfigMirrormakerBuilder_;
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       * @return Whether the connectorConfigMirrormaker field is set.
       */
      @java.lang.Override
      public boolean hasConnectorConfigMirrormaker() {
        return connectorConfigCase_ == 10;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       * @return The connectorConfigMirrormaker.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec getConnectorConfigMirrormaker() {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (connectorConfigCase_ == 10) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
        } else {
          if (connectorConfigCase_ == 10) {
            return connectorConfigMirrormakerBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public Builder setConnectorConfigMirrormaker(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec value) {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connectorConfig_ = value;
          onChanged();
        } else {
          connectorConfigMirrormakerBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 10;
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public Builder setConnectorConfigMirrormaker(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder builderForValue) {
        if (connectorConfigMirrormakerBuilder_ == null) {
          connectorConfig_ = builderForValue.build();
          onChanged();
        } else {
          connectorConfigMirrormakerBuilder_.setMessage(builderForValue.build());
        }
        connectorConfigCase_ = 10;
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public Builder mergeConnectorConfigMirrormaker(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec value) {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (connectorConfigCase_ == 10 &&
              connectorConfig_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance()) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_)
                .mergeFrom(value).buildPartial();
          } else {
            connectorConfig_ = value;
          }
          onChanged();
        } else {
          if (connectorConfigCase_ == 10) {
            connectorConfigMirrormakerBuilder_.mergeFrom(value);
          }
          connectorConfigMirrormakerBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 10;
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public Builder clearConnectorConfigMirrormaker() {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (connectorConfigCase_ == 10) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
            onChanged();
          }
        } else {
          if (connectorConfigCase_ == 10) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
          }
          connectorConfigMirrormakerBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder getConnectorConfigMirrormakerBuilder() {
        return getConnectorConfigMirrormakerFieldBuilder().getBuilder();
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder getConnectorConfigMirrormakerOrBuilder() {
        if ((connectorConfigCase_ == 10) && (connectorConfigMirrormakerBuilder_ != null)) {
          return connectorConfigMirrormakerBuilder_.getMessageOrBuilder();
        } else {
          if (connectorConfigCase_ == 10) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder> 
          getConnectorConfigMirrormakerFieldBuilder() {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (!(connectorConfigCase_ == 10)) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
          }
          connectorConfigMirrormakerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_,
                  getParentForChildren(),
                  isClean());
          connectorConfig_ = null;
        }
        connectorConfigCase_ = 10;
        onChanged();;
        return connectorConfigMirrormakerBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpecOrBuilder> connectorConfigS3SinkBuilder_;
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       * @return Whether the connectorConfigS3Sink field is set.
       */
      @java.lang.Override
      public boolean hasConnectorConfigS3Sink() {
        return connectorConfigCase_ == 11;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       * @return The connectorConfigS3Sink.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec getConnectorConfigS3Sink() {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (connectorConfigCase_ == 11) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.getDefaultInstance();
        } else {
          if (connectorConfigCase_ == 11) {
            return connectorConfigS3SinkBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public Builder setConnectorConfigS3Sink(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec value) {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connectorConfig_ = value;
          onChanged();
        } else {
          connectorConfigS3SinkBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 11;
        return this;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public Builder setConnectorConfigS3Sink(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.Builder builderForValue) {
        if (connectorConfigS3SinkBuilder_ == null) {
          connectorConfig_ = builderForValue.build();
          onChanged();
        } else {
          connectorConfigS3SinkBuilder_.setMessage(builderForValue.build());
        }
        connectorConfigCase_ = 11;
        return this;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public Builder mergeConnectorConfigS3Sink(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec value) {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (connectorConfigCase_ == 11 &&
              connectorConfig_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.getDefaultInstance()) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_)
                .mergeFrom(value).buildPartial();
          } else {
            connectorConfig_ = value;
          }
          onChanged();
        } else {
          if (connectorConfigCase_ == 11) {
            connectorConfigS3SinkBuilder_.mergeFrom(value);
          }
          connectorConfigS3SinkBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 11;
        return this;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public Builder clearConnectorConfigS3Sink() {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (connectorConfigCase_ == 11) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
            onChanged();
          }
        } else {
          if (connectorConfigCase_ == 11) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
          }
          connectorConfigS3SinkBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.Builder getConnectorConfigS3SinkBuilder() {
        return getConnectorConfigS3SinkFieldBuilder().getBuilder();
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpecOrBuilder getConnectorConfigS3SinkOrBuilder() {
        if ((connectorConfigCase_ == 11) && (connectorConfigS3SinkBuilder_ != null)) {
          return connectorConfigS3SinkBuilder_.getMessageOrBuilder();
        } else {
          if (connectorConfigCase_ == 11) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpecOrBuilder> 
          getConnectorConfigS3SinkFieldBuilder() {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (!(connectorConfigCase_ == 11)) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.getDefaultInstance();
          }
          connectorConfigS3SinkBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpecOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) connectorConfig_,
                  getParentForChildren(),
                  isClean());
          connectorConfig_ = null;
        }
        connectorConfigCase_ = 11;
        onChanged();;
        return connectorConfigS3SinkBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ConnectorSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ConnectorSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ConnectorSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ConnectorSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface UpdateConnectorSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.UpdateConnectorSpec)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Maximum number of connector tasks to update.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 1;
     * @return Whether the tasksMax field is set.
     */
    boolean hasTasksMax();
    /**
     * 
     * Maximum number of connector tasks to update.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 1;
     * @return The tasksMax.
     */
    com.google.protobuf.Int64Value getTasksMax();
    /**
     * 
     * Maximum number of connector tasks to update.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 1;
     */
    com.google.protobuf.Int64ValueOrBuilder getTasksMaxOrBuilder();
    /**
     * 
     * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
     * Example: `sync.topics.config.enabled: false`.
     * 
     *
     * map<string, string> properties = 2;
     */
    int getPropertiesCount();
    /**
     * 
     * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
     * Example: `sync.topics.config.enabled: false`.
     * 
     *
     * map<string, string> properties = 2;
     */
    boolean containsProperties(
        java.lang.String key);
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map
    getProperties();
    /**
     * 
     * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
     * Example: `sync.topics.config.enabled: false`.
     * 
     *
     * map<string, string> properties = 2;
     */
    java.util.Map
    getPropertiesMap();
    /**
     * 
     * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
     * Example: `sync.topics.config.enabled: false`.
     * 
     *
     * map<string, string> properties = 2;
     */
    java.lang.String getPropertiesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * 
     * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
     * Example: `sync.topics.config.enabled: false`.
     * 
     *
     * map<string, string> properties = 2;
     */
    java.lang.String getPropertiesOrThrow(
        java.lang.String key);
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     * @return Whether the connectorConfigMirrormaker field is set.
     */
    boolean hasConnectorConfigMirrormaker();
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     * @return The connectorConfigMirrormaker.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec getConnectorConfigMirrormaker();
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder getConnectorConfigMirrormakerOrBuilder();
    /**
     * 
     * Update specification for S3-Sink Connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     * @return Whether the connectorConfigS3Sink field is set.
     */
    boolean hasConnectorConfigS3Sink();
    /**
     * 
     * Update specification for S3-Sink Connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     * @return The connectorConfigS3Sink.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec getConnectorConfigS3Sink();
    /**
     * 
     * Update specification for S3-Sink Connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpecOrBuilder getConnectorConfigS3SinkOrBuilder();
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec.ConnectorConfigCase getConnectorConfigCase();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.UpdateConnectorSpec}
   */
  public static final class UpdateConnectorSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.UpdateConnectorSpec)
      UpdateConnectorSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UpdateConnectorSpec.newBuilder() to construct.
    private UpdateConnectorSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private UpdateConnectorSpec() {
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new UpdateConnectorSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UpdateConnectorSpec(
        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: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (tasksMax_ != null) {
                subBuilder = tasksMax_.toBuilder();
              }
              tasksMax_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tasksMax_);
                tasksMax_ = subBuilder.buildPartial();
              }
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                properties_ = com.google.protobuf.MapField.newMapField(
                    PropertiesDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry
              properties__ = input.readMessage(
                  PropertiesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              properties_.getMutableMap().put(
                  properties__.getKey(), properties__.getValue());
              break;
            }
            case 82: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder subBuilder = null;
              if (connectorConfigCase_ == 10) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_).toBuilder();
              }
              connectorConfig_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_);
                connectorConfig_ = subBuilder.buildPartial();
              }
              connectorConfigCase_ = 10;
              break;
            }
            case 90: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.Builder subBuilder = null;
              if (connectorConfigCase_ == 11) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_).toBuilder();
              }
              connectorConfig_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_);
                connectorConfig_ = subBuilder.buildPartial();
              }
              connectorConfigCase_ = 11;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_descriptor;
    }
    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 2:
          return internalGetProperties();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec.Builder.class);
    }
    private int connectorConfigCase_ = 0;
    private java.lang.Object connectorConfig_;
    public enum ConnectorConfigCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      CONNECTOR_CONFIG_MIRRORMAKER(10),
      CONNECTOR_CONFIG_S3_SINK(11),
      CONNECTORCONFIG_NOT_SET(0);
      private final int value;
      private ConnectorConfigCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ConnectorConfigCase valueOf(int value) {
        return forNumber(value);
      }
      public static ConnectorConfigCase forNumber(int value) {
        switch (value) {
          case 10: return CONNECTOR_CONFIG_MIRRORMAKER;
          case 11: return CONNECTOR_CONFIG_S3_SINK;
          case 0: return CONNECTORCONFIG_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public ConnectorConfigCase
    getConnectorConfigCase() {
      return ConnectorConfigCase.forNumber(
          connectorConfigCase_);
    }
    public static final int TASKS_MAX_FIELD_NUMBER = 1;
    private com.google.protobuf.Int64Value tasksMax_;
    /**
     * 
     * Maximum number of connector tasks to update.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 1;
     * @return Whether the tasksMax field is set.
     */
    @java.lang.Override
    public boolean hasTasksMax() {
      return tasksMax_ != null;
    }
    /**
     * 
     * Maximum number of connector tasks to update.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 1;
     * @return The tasksMax.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getTasksMax() {
      return tasksMax_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : tasksMax_;
    }
    /**
     * 
     * Maximum number of connector tasks to update.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 1;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getTasksMaxOrBuilder() {
      return getTasksMax();
    }
    public static final int PROPERTIES_FIELD_NUMBER = 2;
    private static final class PropertiesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .newDefaultInstance(
                  yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_PropertiesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> properties_;
    private com.google.protobuf.MapField
    internalGetProperties() {
      if (properties_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            PropertiesDefaultEntryHolder.defaultEntry);
      }
      return properties_;
    }
    public int getPropertiesCount() {
      return internalGetProperties().getMap().size();
    }
    /**
     * 
     * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
     * Example: `sync.topics.config.enabled: false`.
     * 
     *
     * map<string, string> properties = 2;
     */
    @java.lang.Override
    public boolean containsProperties(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetProperties().getMap().containsKey(key);
    }
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map getProperties() {
      return getPropertiesMap();
    }
    /**
     * 
     * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
     * Example: `sync.topics.config.enabled: false`.
     * 
     *
     * map<string, string> properties = 2;
     */
    @java.lang.Override
    public java.util.Map getPropertiesMap() {
      return internalGetProperties().getMap();
    }
    /**
     * 
     * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
     * Example: `sync.topics.config.enabled: false`.
     * 
     *
     * map<string, string> properties = 2;
     */
    @java.lang.Override
    public java.lang.String getPropertiesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetProperties().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * 
     * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
     * Example: `sync.topics.config.enabled: false`.
     * 
     *
     * map<string, string> properties = 2;
     */
    @java.lang.Override
    public java.lang.String getPropertiesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetProperties().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }
    public static final int CONNECTOR_CONFIG_MIRRORMAKER_FIELD_NUMBER = 10;
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     * @return Whether the connectorConfigMirrormaker field is set.
     */
    @java.lang.Override
    public boolean hasConnectorConfigMirrormaker() {
      return connectorConfigCase_ == 10;
    }
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     * @return The connectorConfigMirrormaker.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec getConnectorConfigMirrormaker() {
      if (connectorConfigCase_ == 10) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
    }
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder getConnectorConfigMirrormakerOrBuilder() {
      if (connectorConfigCase_ == 10) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
    }
    public static final int CONNECTOR_CONFIG_S3_SINK_FIELD_NUMBER = 11;
    /**
     * 
     * Update specification for S3-Sink Connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     * @return Whether the connectorConfigS3Sink field is set.
     */
    @java.lang.Override
    public boolean hasConnectorConfigS3Sink() {
      return connectorConfigCase_ == 11;
    }
    /**
     * 
     * Update specification for S3-Sink Connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     * @return The connectorConfigS3Sink.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec getConnectorConfigS3Sink() {
      if (connectorConfigCase_ == 11) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.getDefaultInstance();
    }
    /**
     * 
     * Update specification for S3-Sink Connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpecOrBuilder getConnectorConfigS3SinkOrBuilder() {
      if (connectorConfigCase_ == 11) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (tasksMax_ != null) {
        output.writeMessage(1, getTasksMax());
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetProperties(),
          PropertiesDefaultEntryHolder.defaultEntry,
          2);
      if (connectorConfigCase_ == 10) {
        output.writeMessage(10, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_);
      }
      if (connectorConfigCase_ == 11) {
        output.writeMessage(11, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (tasksMax_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTasksMax());
      }
      for (java.util.Map.Entry entry
           : internalGetProperties().getMap().entrySet()) {
        com.google.protobuf.MapEntry
        properties__ = PropertiesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, properties__);
      }
      if (connectorConfigCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_);
      }
      if (connectorConfigCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec) obj;
      if (hasTasksMax() != other.hasTasksMax()) return false;
      if (hasTasksMax()) {
        if (!getTasksMax()
            .equals(other.getTasksMax())) return false;
      }
      if (!internalGetProperties().equals(
          other.internalGetProperties())) return false;
      if (!getConnectorConfigCase().equals(other.getConnectorConfigCase())) return false;
      switch (connectorConfigCase_) {
        case 10:
          if (!getConnectorConfigMirrormaker()
              .equals(other.getConnectorConfigMirrormaker())) return false;
          break;
        case 11:
          if (!getConnectorConfigS3Sink()
              .equals(other.getConnectorConfigS3Sink())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTasksMax()) {
        hash = (37 * hash) + TASKS_MAX_FIELD_NUMBER;
        hash = (53 * hash) + getTasksMax().hashCode();
      }
      if (!internalGetProperties().getMap().isEmpty()) {
        hash = (37 * hash) + PROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetProperties().hashCode();
      }
      switch (connectorConfigCase_) {
        case 10:
          hash = (37 * hash) + CONNECTOR_CONFIG_MIRRORMAKER_FIELD_NUMBER;
          hash = (53 * hash) + getConnectorConfigMirrormaker().hashCode();
          break;
        case 11:
          hash = (37 * hash) + CONNECTOR_CONFIG_S3_SINK_FIELD_NUMBER;
          hash = (53 * hash) + getConnectorConfigS3Sink().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec 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 yandex.cloud.mdb.kafka.v1.UpdateConnectorSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.UpdateConnectorSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_descriptor;
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetProperties();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableProperties();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec.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();
        if (tasksMaxBuilder_ == null) {
          tasksMax_ = null;
        } else {
          tasksMax_ = null;
          tasksMaxBuilder_ = null;
        }
        internalGetMutableProperties().clear();
        connectorConfigCase_ = 0;
        connectorConfig_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec(this);
        int from_bitField0_ = bitField0_;
        if (tasksMaxBuilder_ == null) {
          result.tasksMax_ = tasksMax_;
        } else {
          result.tasksMax_ = tasksMaxBuilder_.build();
        }
        result.properties_ = internalGetProperties();
        result.properties_.makeImmutable();
        if (connectorConfigCase_ == 10) {
          if (connectorConfigMirrormakerBuilder_ == null) {
            result.connectorConfig_ = connectorConfig_;
          } else {
            result.connectorConfig_ = connectorConfigMirrormakerBuilder_.build();
          }
        }
        if (connectorConfigCase_ == 11) {
          if (connectorConfigS3SinkBuilder_ == null) {
            result.connectorConfig_ = connectorConfig_;
          } else {
            result.connectorConfig_ = connectorConfigS3SinkBuilder_.build();
          }
        }
        result.connectorConfigCase_ = connectorConfigCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec.getDefaultInstance()) return this;
        if (other.hasTasksMax()) {
          mergeTasksMax(other.getTasksMax());
        }
        internalGetMutableProperties().mergeFrom(
            other.internalGetProperties());
        switch (other.getConnectorConfigCase()) {
          case CONNECTOR_CONFIG_MIRRORMAKER: {
            mergeConnectorConfigMirrormaker(other.getConnectorConfigMirrormaker());
            break;
          }
          case CONNECTOR_CONFIG_S3_SINK: {
            mergeConnectorConfigS3Sink(other.getConnectorConfigS3Sink());
            break;
          }
          case CONNECTORCONFIG_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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int connectorConfigCase_ = 0;
      private java.lang.Object connectorConfig_;
      public ConnectorConfigCase
          getConnectorConfigCase() {
        return ConnectorConfigCase.forNumber(
            connectorConfigCase_);
      }
      public Builder clearConnectorConfig() {
        connectorConfigCase_ = 0;
        connectorConfig_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private com.google.protobuf.Int64Value tasksMax_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> tasksMaxBuilder_;
      /**
       * 
       * Maximum number of connector tasks to update.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 1;
       * @return Whether the tasksMax field is set.
       */
      public boolean hasTasksMax() {
        return tasksMaxBuilder_ != null || tasksMax_ != null;
      }
      /**
       * 
       * Maximum number of connector tasks to update.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 1;
       * @return The tasksMax.
       */
      public com.google.protobuf.Int64Value getTasksMax() {
        if (tasksMaxBuilder_ == null) {
          return tasksMax_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : tasksMax_;
        } else {
          return tasksMaxBuilder_.getMessage();
        }
      }
      /**
       * 
       * Maximum number of connector tasks to update.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 1;
       */
      public Builder setTasksMax(com.google.protobuf.Int64Value value) {
        if (tasksMaxBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tasksMax_ = value;
          onChanged();
        } else {
          tasksMaxBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks to update.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 1;
       */
      public Builder setTasksMax(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (tasksMaxBuilder_ == null) {
          tasksMax_ = builderForValue.build();
          onChanged();
        } else {
          tasksMaxBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks to update.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 1;
       */
      public Builder mergeTasksMax(com.google.protobuf.Int64Value value) {
        if (tasksMaxBuilder_ == null) {
          if (tasksMax_ != null) {
            tasksMax_ =
              com.google.protobuf.Int64Value.newBuilder(tasksMax_).mergeFrom(value).buildPartial();
          } else {
            tasksMax_ = value;
          }
          onChanged();
        } else {
          tasksMaxBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks to update.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 1;
       */
      public Builder clearTasksMax() {
        if (tasksMaxBuilder_ == null) {
          tasksMax_ = null;
          onChanged();
        } else {
          tasksMax_ = null;
          tasksMaxBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks to update.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 1;
       */
      public com.google.protobuf.Int64Value.Builder getTasksMaxBuilder() {
        
        onChanged();
        return getTasksMaxFieldBuilder().getBuilder();
      }
      /**
       * 
       * Maximum number of connector tasks to update.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 1;
       */
      public com.google.protobuf.Int64ValueOrBuilder getTasksMaxOrBuilder() {
        if (tasksMaxBuilder_ != null) {
          return tasksMaxBuilder_.getMessageOrBuilder();
        } else {
          return tasksMax_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : tasksMax_;
        }
      }
      /**
       * 
       * Maximum number of connector tasks to update.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getTasksMaxFieldBuilder() {
        if (tasksMaxBuilder_ == null) {
          tasksMaxBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getTasksMax(),
                  getParentForChildren(),
                  isClean());
          tasksMax_ = null;
        }
        return tasksMaxBuilder_;
      }
      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> properties_;
      private com.google.protobuf.MapField
      internalGetProperties() {
        if (properties_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              PropertiesDefaultEntryHolder.defaultEntry);
        }
        return properties_;
      }
      private com.google.protobuf.MapField
      internalGetMutableProperties() {
        onChanged();;
        if (properties_ == null) {
          properties_ = com.google.protobuf.MapField.newMapField(
              PropertiesDefaultEntryHolder.defaultEntry);
        }
        if (!properties_.isMutable()) {
          properties_ = properties_.copy();
        }
        return properties_;
      }
      public int getPropertiesCount() {
        return internalGetProperties().getMap().size();
      }
      /**
       * 
       * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
       * Example: `sync.topics.config.enabled: false`.
       * 
       *
       * map<string, string> properties = 2;
       */
      @java.lang.Override
      public boolean containsProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetProperties().getMap().containsKey(key);
      }
      /**
       * Use {@link #getPropertiesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map getProperties() {
        return getPropertiesMap();
      }
      /**
       * 
       * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
       * Example: `sync.topics.config.enabled: false`.
       * 
       *
       * map<string, string> properties = 2;
       */
      @java.lang.Override
      public java.util.Map getPropertiesMap() {
        return internalGetProperties().getMap();
      }
      /**
       * 
       * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
       * Example: `sync.topics.config.enabled: false`.
       * 
       *
       * map<string, string> properties = 2;
       */
      @java.lang.Override
      public java.lang.String getPropertiesOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetProperties().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * 
       * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
       * Example: `sync.topics.config.enabled: false`.
       * 
       *
       * map<string, string> properties = 2;
       */
      @java.lang.Override
      public java.lang.String getPropertiesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetProperties().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearProperties() {
        internalGetMutableProperties().getMutableMap()
            .clear();
        return this;
      }
      /**
       * 
       * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
       * Example: `sync.topics.config.enabled: false`.
       * 
       *
       * map<string, string> properties = 2;
       */
      public Builder removeProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableProperties().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map
      getMutableProperties() {
        return internalGetMutableProperties().getMutableMap();
      }
      /**
       * 
       * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
       * Example: `sync.topics.config.enabled: false`.
       * 
       *
       * map<string, string> properties = 2;
       */
      public Builder putProperties(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) {
  throw new NullPointerException("map value");
}
        internalGetMutableProperties().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * 
       * A set of new or changed properties to update for the connector. They are passed with the connector configuration to Managed Service for Apache Kafka®.
       * Example: `sync.topics.config.enabled: false`.
       * 
       *
       * map<string, string> properties = 2;
       */
      public Builder putAllProperties(
          java.util.Map values) {
        internalGetMutableProperties().getMutableMap()
            .putAll(values);
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder> connectorConfigMirrormakerBuilder_;
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       * @return Whether the connectorConfigMirrormaker field is set.
       */
      @java.lang.Override
      public boolean hasConnectorConfigMirrormaker() {
        return connectorConfigCase_ == 10;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       * @return The connectorConfigMirrormaker.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec getConnectorConfigMirrormaker() {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (connectorConfigCase_ == 10) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
        } else {
          if (connectorConfigCase_ == 10) {
            return connectorConfigMirrormakerBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public Builder setConnectorConfigMirrormaker(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec value) {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connectorConfig_ = value;
          onChanged();
        } else {
          connectorConfigMirrormakerBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 10;
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public Builder setConnectorConfigMirrormaker(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder builderForValue) {
        if (connectorConfigMirrormakerBuilder_ == null) {
          connectorConfig_ = builderForValue.build();
          onChanged();
        } else {
          connectorConfigMirrormakerBuilder_.setMessage(builderForValue.build());
        }
        connectorConfigCase_ = 10;
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public Builder mergeConnectorConfigMirrormaker(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec value) {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (connectorConfigCase_ == 10 &&
              connectorConfig_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance()) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_)
                .mergeFrom(value).buildPartial();
          } else {
            connectorConfig_ = value;
          }
          onChanged();
        } else {
          if (connectorConfigCase_ == 10) {
            connectorConfigMirrormakerBuilder_.mergeFrom(value);
          }
          connectorConfigMirrormakerBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 10;
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public Builder clearConnectorConfigMirrormaker() {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (connectorConfigCase_ == 10) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
            onChanged();
          }
        } else {
          if (connectorConfigCase_ == 10) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
          }
          connectorConfigMirrormakerBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder getConnectorConfigMirrormakerBuilder() {
        return getConnectorConfigMirrormakerFieldBuilder().getBuilder();
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder getConnectorConfigMirrormakerOrBuilder() {
        if ((connectorConfigCase_ == 10) && (connectorConfigMirrormakerBuilder_ != null)) {
          return connectorConfigMirrormakerBuilder_.getMessageOrBuilder();
        } else {
          if (connectorConfigCase_ == 10) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec connector_config_mirrormaker = 10;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder> 
          getConnectorConfigMirrormakerFieldBuilder() {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (!(connectorConfigCase_ == 10)) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
          }
          connectorConfigMirrormakerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) connectorConfig_,
                  getParentForChildren(),
                  isClean());
          connectorConfig_ = null;
        }
        connectorConfigCase_ = 10;
        onChanged();;
        return connectorConfigMirrormakerBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpecOrBuilder> connectorConfigS3SinkBuilder_;
      /**
       * 
       * Update specification for S3-Sink Connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       * @return Whether the connectorConfigS3Sink field is set.
       */
      @java.lang.Override
      public boolean hasConnectorConfigS3Sink() {
        return connectorConfigCase_ == 11;
      }
      /**
       * 
       * Update specification for S3-Sink Connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       * @return The connectorConfigS3Sink.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec getConnectorConfigS3Sink() {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (connectorConfigCase_ == 11) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.getDefaultInstance();
        } else {
          if (connectorConfigCase_ == 11) {
            return connectorConfigS3SinkBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Update specification for S3-Sink Connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public Builder setConnectorConfigS3Sink(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec value) {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connectorConfig_ = value;
          onChanged();
        } else {
          connectorConfigS3SinkBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 11;
        return this;
      }
      /**
       * 
       * Update specification for S3-Sink Connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public Builder setConnectorConfigS3Sink(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.Builder builderForValue) {
        if (connectorConfigS3SinkBuilder_ == null) {
          connectorConfig_ = builderForValue.build();
          onChanged();
        } else {
          connectorConfigS3SinkBuilder_.setMessage(builderForValue.build());
        }
        connectorConfigCase_ = 11;
        return this;
      }
      /**
       * 
       * Update specification for S3-Sink Connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public Builder mergeConnectorConfigS3Sink(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec value) {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (connectorConfigCase_ == 11 &&
              connectorConfig_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.getDefaultInstance()) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_)
                .mergeFrom(value).buildPartial();
          } else {
            connectorConfig_ = value;
          }
          onChanged();
        } else {
          if (connectorConfigCase_ == 11) {
            connectorConfigS3SinkBuilder_.mergeFrom(value);
          }
          connectorConfigS3SinkBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 11;
        return this;
      }
      /**
       * 
       * Update specification for S3-Sink Connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public Builder clearConnectorConfigS3Sink() {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (connectorConfigCase_ == 11) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
            onChanged();
          }
        } else {
          if (connectorConfigCase_ == 11) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
          }
          connectorConfigS3SinkBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Update specification for S3-Sink Connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.Builder getConnectorConfigS3SinkBuilder() {
        return getConnectorConfigS3SinkFieldBuilder().getBuilder();
      }
      /**
       * 
       * Update specification for S3-Sink Connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpecOrBuilder getConnectorConfigS3SinkOrBuilder() {
        if ((connectorConfigCase_ == 11) && (connectorConfigS3SinkBuilder_ != null)) {
          return connectorConfigS3SinkBuilder_.getMessageOrBuilder();
        } else {
          if (connectorConfigCase_ == 11) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Update specification for S3-Sink Connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec connector_config_s3_sink = 11;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpecOrBuilder> 
          getConnectorConfigS3SinkFieldBuilder() {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (!(connectorConfigCase_ == 11)) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.getDefaultInstance();
          }
          connectorConfigS3SinkBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpecOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) connectorConfig_,
                  getParentForChildren(),
                  isClean());
          connectorConfig_ = null;
        }
        connectorConfigCase_ = 11;
        onChanged();;
        return connectorConfigS3SinkBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.UpdateConnectorSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.UpdateConnectorSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public UpdateConnectorSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UpdateConnectorSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ConnectorConfigMirrorMakerSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Source cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
     * @return Whether the sourceCluster field is set.
     */
    boolean hasSourceCluster();
    /**
     * 
     * Source cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
     * @return The sourceCluster.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec getSourceCluster();
    /**
     * 
     * Source cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder getSourceClusterOrBuilder();
    /**
     * 
     * Target cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
     * @return Whether the targetCluster field is set.
     */
    boolean hasTargetCluster();
    /**
     * 
     * Target cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
     * @return The targetCluster.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec getTargetCluster();
    /**
     * 
     * Target cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder getTargetClusterOrBuilder();
    /**
     * 
     * List of Kafka topics, separated by `,`.
     * 
     *
     * string topics = 3;
     * @return The topics.
     */
    java.lang.String getTopics();
    /**
     * 
     * List of Kafka topics, separated by `,`.
     * 
     *
     * string topics = 3;
     * @return The bytes for topics.
     */
    com.google.protobuf.ByteString
        getTopicsBytes();
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     * @return Whether the replicationFactor field is set.
     */
    boolean hasReplicationFactor();
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     * @return The replicationFactor.
     */
    com.google.protobuf.Int64Value getReplicationFactor();
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     */
    com.google.protobuf.Int64ValueOrBuilder getReplicationFactorOrBuilder();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec}
   */
  public static final class ConnectorConfigMirrorMakerSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec)
      ConnectorConfigMirrorMakerSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectorConfigMirrorMakerSpec.newBuilder() to construct.
    private ConnectorConfigMirrorMakerSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ConnectorConfigMirrorMakerSpec() {
      topics_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectorConfigMirrorMakerSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectorConfigMirrorMakerSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder subBuilder = null;
              if (sourceCluster_ != null) {
                subBuilder = sourceCluster_.toBuilder();
              }
              sourceCluster_ = input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sourceCluster_);
                sourceCluster_ = subBuilder.buildPartial();
              }
              break;
            }
            case 18: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder subBuilder = null;
              if (targetCluster_ != null) {
                subBuilder = targetCluster_.toBuilder();
              }
              targetCluster_ = input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(targetCluster_);
                targetCluster_ = subBuilder.buildPartial();
              }
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              topics_ = s;
              break;
            }
            case 34: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (replicationFactor_ != null) {
                subBuilder = replicationFactor_.toBuilder();
              }
              replicationFactor_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(replicationFactor_);
                replicationFactor_ = subBuilder.buildPartial();
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder.class);
    }
    public static final int SOURCE_CLUSTER_FIELD_NUMBER = 1;
    private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec sourceCluster_;
    /**
     * 
     * Source cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
     * @return Whether the sourceCluster field is set.
     */
    @java.lang.Override
    public boolean hasSourceCluster() {
      return sourceCluster_ != null;
    }
    /**
     * 
     * Source cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
     * @return The sourceCluster.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec getSourceCluster() {
      return sourceCluster_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.getDefaultInstance() : sourceCluster_;
    }
    /**
     * 
     * Source cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder getSourceClusterOrBuilder() {
      return getSourceCluster();
    }
    public static final int TARGET_CLUSTER_FIELD_NUMBER = 2;
    private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec targetCluster_;
    /**
     * 
     * Target cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
     * @return Whether the targetCluster field is set.
     */
    @java.lang.Override
    public boolean hasTargetCluster() {
      return targetCluster_ != null;
    }
    /**
     * 
     * Target cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
     * @return The targetCluster.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec getTargetCluster() {
      return targetCluster_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.getDefaultInstance() : targetCluster_;
    }
    /**
     * 
     * Target cluster configuration for the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder getTargetClusterOrBuilder() {
      return getTargetCluster();
    }
    public static final int TOPICS_FIELD_NUMBER = 3;
    private volatile java.lang.Object topics_;
    /**
     * 
     * List of Kafka topics, separated by `,`.
     * 
     *
     * string topics = 3;
     * @return The topics.
     */
    @java.lang.Override
    public java.lang.String getTopics() {
      java.lang.Object ref = topics_;
      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();
        topics_ = s;
        return s;
      }
    }
    /**
     * 
     * List of Kafka topics, separated by `,`.
     * 
     *
     * string topics = 3;
     * @return The bytes for topics.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTopicsBytes() {
      java.lang.Object ref = topics_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        topics_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int REPLICATION_FACTOR_FIELD_NUMBER = 4;
    private com.google.protobuf.Int64Value replicationFactor_;
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     * @return Whether the replicationFactor field is set.
     */
    @java.lang.Override
    public boolean hasReplicationFactor() {
      return replicationFactor_ != null;
    }
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     * @return The replicationFactor.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getReplicationFactor() {
      return replicationFactor_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : replicationFactor_;
    }
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getReplicationFactorOrBuilder() {
      return getReplicationFactor();
    }
    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 (sourceCluster_ != null) {
        output.writeMessage(1, getSourceCluster());
      }
      if (targetCluster_ != null) {
        output.writeMessage(2, getTargetCluster());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, topics_);
      }
      if (replicationFactor_ != null) {
        output.writeMessage(4, getReplicationFactor());
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (sourceCluster_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSourceCluster());
      }
      if (targetCluster_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTargetCluster());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, topics_);
      }
      if (replicationFactor_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getReplicationFactor());
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) obj;
      if (hasSourceCluster() != other.hasSourceCluster()) return false;
      if (hasSourceCluster()) {
        if (!getSourceCluster()
            .equals(other.getSourceCluster())) return false;
      }
      if (hasTargetCluster() != other.hasTargetCluster()) return false;
      if (hasTargetCluster()) {
        if (!getTargetCluster()
            .equals(other.getTargetCluster())) return false;
      }
      if (!getTopics()
          .equals(other.getTopics())) return false;
      if (hasReplicationFactor() != other.hasReplicationFactor()) return false;
      if (hasReplicationFactor()) {
        if (!getReplicationFactor()
            .equals(other.getReplicationFactor())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSourceCluster()) {
        hash = (37 * hash) + SOURCE_CLUSTER_FIELD_NUMBER;
        hash = (53 * hash) + getSourceCluster().hashCode();
      }
      if (hasTargetCluster()) {
        hash = (37 * hash) + TARGET_CLUSTER_FIELD_NUMBER;
        hash = (53 * hash) + getTargetCluster().hashCode();
      }
      hash = (37 * hash) + TOPICS_FIELD_NUMBER;
      hash = (53 * hash) + getTopics().hashCode();
      if (hasReplicationFactor()) {
        hash = (37 * hash) + REPLICATION_FACTOR_FIELD_NUMBER;
        hash = (53 * hash) + getReplicationFactor().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec 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 yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.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();
        if (sourceClusterBuilder_ == null) {
          sourceCluster_ = null;
        } else {
          sourceCluster_ = null;
          sourceClusterBuilder_ = null;
        }
        if (targetClusterBuilder_ == null) {
          targetCluster_ = null;
        } else {
          targetCluster_ = null;
          targetClusterBuilder_ = null;
        }
        topics_ = "";
        if (replicationFactorBuilder_ == null) {
          replicationFactor_ = null;
        } else {
          replicationFactor_ = null;
          replicationFactorBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec(this);
        if (sourceClusterBuilder_ == null) {
          result.sourceCluster_ = sourceCluster_;
        } else {
          result.sourceCluster_ = sourceClusterBuilder_.build();
        }
        if (targetClusterBuilder_ == null) {
          result.targetCluster_ = targetCluster_;
        } else {
          result.targetCluster_ = targetClusterBuilder_.build();
        }
        result.topics_ = topics_;
        if (replicationFactorBuilder_ == null) {
          result.replicationFactor_ = replicationFactor_;
        } else {
          result.replicationFactor_ = replicationFactorBuilder_.build();
        }
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec.getDefaultInstance()) return this;
        if (other.hasSourceCluster()) {
          mergeSourceCluster(other.getSourceCluster());
        }
        if (other.hasTargetCluster()) {
          mergeTargetCluster(other.getTargetCluster());
        }
        if (!other.getTopics().isEmpty()) {
          topics_ = other.topics_;
          onChanged();
        }
        if (other.hasReplicationFactor()) {
          mergeReplicationFactor(other.getReplicationFactor());
        }
        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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec sourceCluster_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder> sourceClusterBuilder_;
      /**
       * 
       * Source cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
       * @return Whether the sourceCluster field is set.
       */
      public boolean hasSourceCluster() {
        return sourceClusterBuilder_ != null || sourceCluster_ != null;
      }
      /**
       * 
       * Source cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
       * @return The sourceCluster.
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec getSourceCluster() {
        if (sourceClusterBuilder_ == null) {
          return sourceCluster_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.getDefaultInstance() : sourceCluster_;
        } else {
          return sourceClusterBuilder_.getMessage();
        }
      }
      /**
       * 
       * Source cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
       */
      public Builder setSourceCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec value) {
        if (sourceClusterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sourceCluster_ = value;
          onChanged();
        } else {
          sourceClusterBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Source cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
       */
      public Builder setSourceCluster(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder builderForValue) {
        if (sourceClusterBuilder_ == null) {
          sourceCluster_ = builderForValue.build();
          onChanged();
        } else {
          sourceClusterBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Source cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
       */
      public Builder mergeSourceCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec value) {
        if (sourceClusterBuilder_ == null) {
          if (sourceCluster_ != null) {
            sourceCluster_ =
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.newBuilder(sourceCluster_).mergeFrom(value).buildPartial();
          } else {
            sourceCluster_ = value;
          }
          onChanged();
        } else {
          sourceClusterBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Source cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
       */
      public Builder clearSourceCluster() {
        if (sourceClusterBuilder_ == null) {
          sourceCluster_ = null;
          onChanged();
        } else {
          sourceCluster_ = null;
          sourceClusterBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Source cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder getSourceClusterBuilder() {
        
        onChanged();
        return getSourceClusterFieldBuilder().getBuilder();
      }
      /**
       * 
       * Source cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder getSourceClusterOrBuilder() {
        if (sourceClusterBuilder_ != null) {
          return sourceClusterBuilder_.getMessageOrBuilder();
        } else {
          return sourceCluster_ == null ?
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.getDefaultInstance() : sourceCluster_;
        }
      }
      /**
       * 
       * Source cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec source_cluster = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder> 
          getSourceClusterFieldBuilder() {
        if (sourceClusterBuilder_ == null) {
          sourceClusterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder>(
                  getSourceCluster(),
                  getParentForChildren(),
                  isClean());
          sourceCluster_ = null;
        }
        return sourceClusterBuilder_;
      }
      private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec targetCluster_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder> targetClusterBuilder_;
      /**
       * 
       * Target cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
       * @return Whether the targetCluster field is set.
       */
      public boolean hasTargetCluster() {
        return targetClusterBuilder_ != null || targetCluster_ != null;
      }
      /**
       * 
       * Target cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
       * @return The targetCluster.
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec getTargetCluster() {
        if (targetClusterBuilder_ == null) {
          return targetCluster_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.getDefaultInstance() : targetCluster_;
        } else {
          return targetClusterBuilder_.getMessage();
        }
      }
      /**
       * 
       * Target cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
       */
      public Builder setTargetCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec value) {
        if (targetClusterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          targetCluster_ = value;
          onChanged();
        } else {
          targetClusterBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Target cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
       */
      public Builder setTargetCluster(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder builderForValue) {
        if (targetClusterBuilder_ == null) {
          targetCluster_ = builderForValue.build();
          onChanged();
        } else {
          targetClusterBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Target cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
       */
      public Builder mergeTargetCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec value) {
        if (targetClusterBuilder_ == null) {
          if (targetCluster_ != null) {
            targetCluster_ =
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.newBuilder(targetCluster_).mergeFrom(value).buildPartial();
          } else {
            targetCluster_ = value;
          }
          onChanged();
        } else {
          targetClusterBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Target cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
       */
      public Builder clearTargetCluster() {
        if (targetClusterBuilder_ == null) {
          targetCluster_ = null;
          onChanged();
        } else {
          targetCluster_ = null;
          targetClusterBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Target cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder getTargetClusterBuilder() {
        
        onChanged();
        return getTargetClusterFieldBuilder().getBuilder();
      }
      /**
       * 
       * Target cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder getTargetClusterOrBuilder() {
        if (targetClusterBuilder_ != null) {
          return targetClusterBuilder_.getMessageOrBuilder();
        } else {
          return targetCluster_ == null ?
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.getDefaultInstance() : targetCluster_;
        }
      }
      /**
       * 
       * Target cluster configuration for the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec target_cluster = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder> 
          getTargetClusterFieldBuilder() {
        if (targetClusterBuilder_ == null) {
          targetClusterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder>(
                  getTargetCluster(),
                  getParentForChildren(),
                  isClean());
          targetCluster_ = null;
        }
        return targetClusterBuilder_;
      }
      private java.lang.Object topics_ = "";
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @return The topics.
       */
      public java.lang.String getTopics() {
        java.lang.Object ref = topics_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          topics_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @return The bytes for topics.
       */
      public com.google.protobuf.ByteString
          getTopicsBytes() {
        java.lang.Object ref = topics_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          topics_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @param value The topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopics(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        topics_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @return This builder for chaining.
       */
      public Builder clearTopics() {
        
        topics_ = getDefaultInstance().getTopics();
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @param value The bytes for topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopicsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        topics_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value replicationFactor_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> replicationFactorBuilder_;
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       * @return Whether the replicationFactor field is set.
       */
      public boolean hasReplicationFactor() {
        return replicationFactorBuilder_ != null || replicationFactor_ != null;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       * @return The replicationFactor.
       */
      public com.google.protobuf.Int64Value getReplicationFactor() {
        if (replicationFactorBuilder_ == null) {
          return replicationFactor_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : replicationFactor_;
        } else {
          return replicationFactorBuilder_.getMessage();
        }
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public Builder setReplicationFactor(com.google.protobuf.Int64Value value) {
        if (replicationFactorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          replicationFactor_ = value;
          onChanged();
        } else {
          replicationFactorBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public Builder setReplicationFactor(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (replicationFactorBuilder_ == null) {
          replicationFactor_ = builderForValue.build();
          onChanged();
        } else {
          replicationFactorBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public Builder mergeReplicationFactor(com.google.protobuf.Int64Value value) {
        if (replicationFactorBuilder_ == null) {
          if (replicationFactor_ != null) {
            replicationFactor_ =
              com.google.protobuf.Int64Value.newBuilder(replicationFactor_).mergeFrom(value).buildPartial();
          } else {
            replicationFactor_ = value;
          }
          onChanged();
        } else {
          replicationFactorBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public Builder clearReplicationFactor() {
        if (replicationFactorBuilder_ == null) {
          replicationFactor_ = null;
          onChanged();
        } else {
          replicationFactor_ = null;
          replicationFactorBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public com.google.protobuf.Int64Value.Builder getReplicationFactorBuilder() {
        
        onChanged();
        return getReplicationFactorFieldBuilder().getBuilder();
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public com.google.protobuf.Int64ValueOrBuilder getReplicationFactorOrBuilder() {
        if (replicationFactorBuilder_ != null) {
          return replicationFactorBuilder_.getMessageOrBuilder();
        } else {
          return replicationFactor_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : replicationFactor_;
        }
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getReplicationFactorFieldBuilder() {
        if (replicationFactorBuilder_ == null) {
          replicationFactorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getReplicationFactor(),
                  getParentForChildren(),
                  isClean());
          replicationFactor_ = null;
        }
        return replicationFactorBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMakerSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ConnectorConfigMirrorMakerSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ConnectorConfigMirrorMakerSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ClusterConnectionSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Alias of cluster connection configuration.
     * Examples: `source`, `target`.
     * 
     *
     * string alias = 1;
     * @return The alias.
     */
    java.lang.String getAlias();
    /**
     * 
     * Alias of cluster connection configuration.
     * Examples: `source`, `target`.
     * 
     *
     * string alias = 1;
     * @return The bytes for alias.
     */
    com.google.protobuf.ByteString
        getAliasBytes();
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
     * @return Whether the thisCluster field is set.
     */
    boolean hasThisCluster();
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
     * @return The thisCluster.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec getThisCluster();
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpecOrBuilder getThisClusterOrBuilder();
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
     * @return Whether the externalCluster field is set.
     */
    boolean hasExternalCluster();
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
     * @return The externalCluster.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec getExternalCluster();
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpecOrBuilder getExternalClusterOrBuilder();
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.ClusterConnectionCase getClusterConnectionCase();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec}
   */
  public static final class ClusterConnectionSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec)
      ClusterConnectionSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClusterConnectionSpec.newBuilder() to construct.
    private ClusterConnectionSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ClusterConnectionSpec() {
      alias_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ClusterConnectionSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClusterConnectionSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              alias_ = s;
              break;
            }
            case 18: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.Builder subBuilder = null;
              if (clusterConnectionCase_ == 2) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_).toBuilder();
              }
              clusterConnection_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_);
                clusterConnection_ = subBuilder.buildPartial();
              }
              clusterConnectionCase_ = 2;
              break;
            }
            case 26: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.Builder subBuilder = null;
              if (clusterConnectionCase_ == 3) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_).toBuilder();
              }
              clusterConnection_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_);
                clusterConnection_ = subBuilder.buildPartial();
              }
              clusterConnectionCase_ = 3;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder.class);
    }
    private int clusterConnectionCase_ = 0;
    private java.lang.Object clusterConnection_;
    public enum ClusterConnectionCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      THIS_CLUSTER(2),
      EXTERNAL_CLUSTER(3),
      CLUSTERCONNECTION_NOT_SET(0);
      private final int value;
      private ClusterConnectionCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ClusterConnectionCase valueOf(int value) {
        return forNumber(value);
      }
      public static ClusterConnectionCase forNumber(int value) {
        switch (value) {
          case 2: return THIS_CLUSTER;
          case 3: return EXTERNAL_CLUSTER;
          case 0: return CLUSTERCONNECTION_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public ClusterConnectionCase
    getClusterConnectionCase() {
      return ClusterConnectionCase.forNumber(
          clusterConnectionCase_);
    }
    public static final int ALIAS_FIELD_NUMBER = 1;
    private volatile java.lang.Object alias_;
    /**
     * 
     * Alias of cluster connection configuration.
     * Examples: `source`, `target`.
     * 
     *
     * string alias = 1;
     * @return The alias.
     */
    @java.lang.Override
    public java.lang.String getAlias() {
      java.lang.Object ref = alias_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        alias_ = s;
        return s;
      }
    }
    /**
     * 
     * Alias of cluster connection configuration.
     * Examples: `source`, `target`.
     * 
     *
     * string alias = 1;
     * @return The bytes for alias.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAliasBytes() {
      java.lang.Object ref = alias_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        alias_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int THIS_CLUSTER_FIELD_NUMBER = 2;
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
     * @return Whether the thisCluster field is set.
     */
    @java.lang.Override
    public boolean hasThisCluster() {
      return clusterConnectionCase_ == 2;
    }
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
     * @return The thisCluster.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec getThisCluster() {
      if (clusterConnectionCase_ == 2) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.getDefaultInstance();
    }
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpecOrBuilder getThisClusterOrBuilder() {
      if (clusterConnectionCase_ == 2) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.getDefaultInstance();
    }
    public static final int EXTERNAL_CLUSTER_FIELD_NUMBER = 3;
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
     * @return Whether the externalCluster field is set.
     */
    @java.lang.Override
    public boolean hasExternalCluster() {
      return clusterConnectionCase_ == 3;
    }
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
     * @return The externalCluster.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec getExternalCluster() {
      if (clusterConnectionCase_ == 3) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.getDefaultInstance();
    }
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpecOrBuilder getExternalClusterOrBuilder() {
      if (clusterConnectionCase_ == 3) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alias_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, alias_);
      }
      if (clusterConnectionCase_ == 2) {
        output.writeMessage(2, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_);
      }
      if (clusterConnectionCase_ == 3) {
        output.writeMessage(3, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alias_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, alias_);
      }
      if (clusterConnectionCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_);
      }
      if (clusterConnectionCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec) obj;
      if (!getAlias()
          .equals(other.getAlias())) return false;
      if (!getClusterConnectionCase().equals(other.getClusterConnectionCase())) return false;
      switch (clusterConnectionCase_) {
        case 2:
          if (!getThisCluster()
              .equals(other.getThisCluster())) return false;
          break;
        case 3:
          if (!getExternalCluster()
              .equals(other.getExternalCluster())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ALIAS_FIELD_NUMBER;
      hash = (53 * hash) + getAlias().hashCode();
      switch (clusterConnectionCase_) {
        case 2:
          hash = (37 * hash) + THIS_CLUSTER_FIELD_NUMBER;
          hash = (53 * hash) + getThisCluster().hashCode();
          break;
        case 3:
          hash = (37 * hash) + EXTERNAL_CLUSTER_FIELD_NUMBER;
          hash = (53 * hash) + getExternalCluster().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec 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 yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.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();
        alias_ = "";
        clusterConnectionCase_ = 0;
        clusterConnection_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec(this);
        result.alias_ = alias_;
        if (clusterConnectionCase_ == 2) {
          if (thisClusterBuilder_ == null) {
            result.clusterConnection_ = clusterConnection_;
          } else {
            result.clusterConnection_ = thisClusterBuilder_.build();
          }
        }
        if (clusterConnectionCase_ == 3) {
          if (externalClusterBuilder_ == null) {
            result.clusterConnection_ = clusterConnection_;
          } else {
            result.clusterConnection_ = externalClusterBuilder_.build();
          }
        }
        result.clusterConnectionCase_ = clusterConnectionCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec.getDefaultInstance()) return this;
        if (!other.getAlias().isEmpty()) {
          alias_ = other.alias_;
          onChanged();
        }
        switch (other.getClusterConnectionCase()) {
          case THIS_CLUSTER: {
            mergeThisCluster(other.getThisCluster());
            break;
          }
          case EXTERNAL_CLUSTER: {
            mergeExternalCluster(other.getExternalCluster());
            break;
          }
          case CLUSTERCONNECTION_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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int clusterConnectionCase_ = 0;
      private java.lang.Object clusterConnection_;
      public ClusterConnectionCase
          getClusterConnectionCase() {
        return ClusterConnectionCase.forNumber(
            clusterConnectionCase_);
      }
      public Builder clearClusterConnection() {
        clusterConnectionCase_ = 0;
        clusterConnection_ = null;
        onChanged();
        return this;
      }
      private java.lang.Object alias_ = "";
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @return The alias.
       */
      public java.lang.String getAlias() {
        java.lang.Object ref = alias_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          alias_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @return The bytes for alias.
       */
      public com.google.protobuf.ByteString
          getAliasBytes() {
        java.lang.Object ref = alias_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          alias_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @param value The alias to set.
       * @return This builder for chaining.
       */
      public Builder setAlias(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        alias_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @return This builder for chaining.
       */
      public Builder clearAlias() {
        
        alias_ = getDefaultInstance().getAlias();
        onChanged();
        return this;
      }
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @param value The bytes for alias to set.
       * @return This builder for chaining.
       */
      public Builder setAliasBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        alias_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpecOrBuilder> thisClusterBuilder_;
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
       * @return Whether the thisCluster field is set.
       */
      @java.lang.Override
      public boolean hasThisCluster() {
        return clusterConnectionCase_ == 2;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
       * @return The thisCluster.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec getThisCluster() {
        if (thisClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 2) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.getDefaultInstance();
        } else {
          if (clusterConnectionCase_ == 2) {
            return thisClusterBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
       */
      public Builder setThisCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec value) {
        if (thisClusterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterConnection_ = value;
          onChanged();
        } else {
          thisClusterBuilder_.setMessage(value);
        }
        clusterConnectionCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
       */
      public Builder setThisCluster(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.Builder builderForValue) {
        if (thisClusterBuilder_ == null) {
          clusterConnection_ = builderForValue.build();
          onChanged();
        } else {
          thisClusterBuilder_.setMessage(builderForValue.build());
        }
        clusterConnectionCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
       */
      public Builder mergeThisCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec value) {
        if (thisClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 2 &&
              clusterConnection_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.getDefaultInstance()) {
            clusterConnection_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_)
                .mergeFrom(value).buildPartial();
          } else {
            clusterConnection_ = value;
          }
          onChanged();
        } else {
          if (clusterConnectionCase_ == 2) {
            thisClusterBuilder_.mergeFrom(value);
          }
          thisClusterBuilder_.setMessage(value);
        }
        clusterConnectionCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
       */
      public Builder clearThisCluster() {
        if (thisClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 2) {
            clusterConnectionCase_ = 0;
            clusterConnection_ = null;
            onChanged();
          }
        } else {
          if (clusterConnectionCase_ == 2) {
            clusterConnectionCase_ = 0;
            clusterConnection_ = null;
          }
          thisClusterBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.Builder getThisClusterBuilder() {
        return getThisClusterFieldBuilder().getBuilder();
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpecOrBuilder getThisClusterOrBuilder() {
        if ((clusterConnectionCase_ == 2) && (thisClusterBuilder_ != null)) {
          return thisClusterBuilder_.getMessageOrBuilder();
        } else {
          if (clusterConnectionCase_ == 2) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisClusterSpec this_cluster = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpecOrBuilder> 
          getThisClusterFieldBuilder() {
        if (thisClusterBuilder_ == null) {
          if (!(clusterConnectionCase_ == 2)) {
            clusterConnection_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.getDefaultInstance();
          }
          thisClusterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpecOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) clusterConnection_,
                  getParentForChildren(),
                  isClean());
          clusterConnection_ = null;
        }
        clusterConnectionCase_ = 2;
        onChanged();;
        return thisClusterBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpecOrBuilder> externalClusterBuilder_;
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
       * @return Whether the externalCluster field is set.
       */
      @java.lang.Override
      public boolean hasExternalCluster() {
        return clusterConnectionCase_ == 3;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
       * @return The externalCluster.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec getExternalCluster() {
        if (externalClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 3) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.getDefaultInstance();
        } else {
          if (clusterConnectionCase_ == 3) {
            return externalClusterBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
       */
      public Builder setExternalCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec value) {
        if (externalClusterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterConnection_ = value;
          onChanged();
        } else {
          externalClusterBuilder_.setMessage(value);
        }
        clusterConnectionCase_ = 3;
        return this;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
       */
      public Builder setExternalCluster(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.Builder builderForValue) {
        if (externalClusterBuilder_ == null) {
          clusterConnection_ = builderForValue.build();
          onChanged();
        } else {
          externalClusterBuilder_.setMessage(builderForValue.build());
        }
        clusterConnectionCase_ = 3;
        return this;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
       */
      public Builder mergeExternalCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec value) {
        if (externalClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 3 &&
              clusterConnection_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.getDefaultInstance()) {
            clusterConnection_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_)
                .mergeFrom(value).buildPartial();
          } else {
            clusterConnection_ = value;
          }
          onChanged();
        } else {
          if (clusterConnectionCase_ == 3) {
            externalClusterBuilder_.mergeFrom(value);
          }
          externalClusterBuilder_.setMessage(value);
        }
        clusterConnectionCase_ = 3;
        return this;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
       */
      public Builder clearExternalCluster() {
        if (externalClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 3) {
            clusterConnectionCase_ = 0;
            clusterConnection_ = null;
            onChanged();
          }
        } else {
          if (clusterConnectionCase_ == 3) {
            clusterConnectionCase_ = 0;
            clusterConnection_ = null;
          }
          externalClusterBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.Builder getExternalClusterBuilder() {
        return getExternalClusterFieldBuilder().getBuilder();
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpecOrBuilder getExternalClusterOrBuilder() {
        if ((clusterConnectionCase_ == 3) && (externalClusterBuilder_ != null)) {
          return externalClusterBuilder_.getMessageOrBuilder();
        } else {
          if (clusterConnectionCase_ == 3) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec external_cluster = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpecOrBuilder> 
          getExternalClusterFieldBuilder() {
        if (externalClusterBuilder_ == null) {
          if (!(clusterConnectionCase_ == 3)) {
            clusterConnection_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.getDefaultInstance();
          }
          externalClusterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpecOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) clusterConnection_,
                  getParentForChildren(),
                  isClean());
          clusterConnection_ = null;
        }
        clusterConnectionCase_ = 3;
        onChanged();;
        return externalClusterBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ClusterConnectionSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ClusterConnectionSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ClusterConnectionSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ThisClusterSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ThisClusterSpec)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ThisClusterSpec}
   */
  public static final class ThisClusterSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ThisClusterSpec)
      ThisClusterSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThisClusterSpec.newBuilder() to construct.
    private ThisClusterSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ThisClusterSpec() {
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThisClusterSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThisClusterSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.Builder.class);
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) obj;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec 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 yandex.cloud.mdb.kafka.v1.ThisClusterSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ThisClusterSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec(this);
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ThisClusterSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ThisClusterSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ThisClusterSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ThisClusterSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ExternalClusterConnectionSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * List of bootstrap servers of the cluster, separated by `,`.
     * 
     *
     * string bootstrap_servers = 1;
     * @return The bootstrapServers.
     */
    java.lang.String getBootstrapServers();
    /**
     * 
     * List of bootstrap servers of the cluster, separated by `,`.
     * 
     *
     * string bootstrap_servers = 1;
     * @return The bytes for bootstrapServers.
     */
    com.google.protobuf.ByteString
        getBootstrapServersBytes();
    /**
     * 
     * SASL username to use for connection to the cluster.
     * 
     *
     * string sasl_username = 2;
     * @return The saslUsername.
     */
    java.lang.String getSaslUsername();
    /**
     * 
     * SASL username to use for connection to the cluster.
     * 
     *
     * string sasl_username = 2;
     * @return The bytes for saslUsername.
     */
    com.google.protobuf.ByteString
        getSaslUsernameBytes();
    /**
     * 
     * SASL password to use for connection to the cluster.
     * 
     *
     * string sasl_password = 3;
     * @return The saslPassword.
     */
    java.lang.String getSaslPassword();
    /**
     * 
     * SASL password to use for connection to the cluster.
     * 
     *
     * string sasl_password = 3;
     * @return The bytes for saslPassword.
     */
    com.google.protobuf.ByteString
        getSaslPasswordBytes();
    /**
     * 
     * SASL mechanism to use for connection to the cluster.
     * 
     *
     * string sasl_mechanism = 4;
     * @return The saslMechanism.
     */
    java.lang.String getSaslMechanism();
    /**
     * 
     * SASL mechanism to use for connection to the cluster.
     * 
     *
     * string sasl_mechanism = 4;
     * @return The bytes for saslMechanism.
     */
    com.google.protobuf.ByteString
        getSaslMechanismBytes();
    /**
     * 
     * Security protocol to use for connection to the cluster.
     * 
     *
     * string security_protocol = 5;
     * @return The securityProtocol.
     */
    java.lang.String getSecurityProtocol();
    /**
     * 
     * Security protocol to use for connection to the cluster.
     * 
     *
     * string security_protocol = 5;
     * @return The bytes for securityProtocol.
     */
    com.google.protobuf.ByteString
        getSecurityProtocolBytes();
    /**
     * 
     * CA in PEM format to connect to external cluster.
     * Lines of certificate separated by '\n' symbol.
     * 
     *
     * string ssl_truststore_certificates = 6;
     * @return The sslTruststoreCertificates.
     */
    java.lang.String getSslTruststoreCertificates();
    /**
     * 
     * CA in PEM format to connect to external cluster.
     * Lines of certificate separated by '\n' symbol.
     * 
     *
     * string ssl_truststore_certificates = 6;
     * @return The bytes for sslTruststoreCertificates.
     */
    com.google.protobuf.ByteString
        getSslTruststoreCertificatesBytes();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec}
   */
  public static final class ExternalClusterConnectionSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec)
      ExternalClusterConnectionSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExternalClusterConnectionSpec.newBuilder() to construct.
    private ExternalClusterConnectionSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ExternalClusterConnectionSpec() {
      bootstrapServers_ = "";
      saslUsername_ = "";
      saslPassword_ = "";
      saslMechanism_ = "";
      securityProtocol_ = "";
      sslTruststoreCertificates_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExternalClusterConnectionSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ExternalClusterConnectionSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              bootstrapServers_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              saslUsername_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              saslPassword_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();
              saslMechanism_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();
              securityProtocol_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();
              sslTruststoreCertificates_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.Builder.class);
    }
    public static final int BOOTSTRAP_SERVERS_FIELD_NUMBER = 1;
    private volatile java.lang.Object bootstrapServers_;
    /**
     * 
     * List of bootstrap servers of the cluster, separated by `,`.
     * 
     *
     * string bootstrap_servers = 1;
     * @return The bootstrapServers.
     */
    @java.lang.Override
    public java.lang.String getBootstrapServers() {
      java.lang.Object ref = bootstrapServers_;
      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();
        bootstrapServers_ = s;
        return s;
      }
    }
    /**
     * 
     * List of bootstrap servers of the cluster, separated by `,`.
     * 
     *
     * string bootstrap_servers = 1;
     * @return The bytes for bootstrapServers.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBootstrapServersBytes() {
      java.lang.Object ref = bootstrapServers_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bootstrapServers_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SASL_USERNAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object saslUsername_;
    /**
     * 
     * SASL username to use for connection to the cluster.
     * 
     *
     * string sasl_username = 2;
     * @return The saslUsername.
     */
    @java.lang.Override
    public java.lang.String getSaslUsername() {
      java.lang.Object ref = saslUsername_;
      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();
        saslUsername_ = s;
        return s;
      }
    }
    /**
     * 
     * SASL username to use for connection to the cluster.
     * 
     *
     * string sasl_username = 2;
     * @return The bytes for saslUsername.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSaslUsernameBytes() {
      java.lang.Object ref = saslUsername_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        saslUsername_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SASL_PASSWORD_FIELD_NUMBER = 3;
    private volatile java.lang.Object saslPassword_;
    /**
     * 
     * SASL password to use for connection to the cluster.
     * 
     *
     * string sasl_password = 3;
     * @return The saslPassword.
     */
    @java.lang.Override
    public java.lang.String getSaslPassword() {
      java.lang.Object ref = saslPassword_;
      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();
        saslPassword_ = s;
        return s;
      }
    }
    /**
     * 
     * SASL password to use for connection to the cluster.
     * 
     *
     * string sasl_password = 3;
     * @return The bytes for saslPassword.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSaslPasswordBytes() {
      java.lang.Object ref = saslPassword_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        saslPassword_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SASL_MECHANISM_FIELD_NUMBER = 4;
    private volatile java.lang.Object saslMechanism_;
    /**
     * 
     * SASL mechanism to use for connection to the cluster.
     * 
     *
     * string sasl_mechanism = 4;
     * @return The saslMechanism.
     */
    @java.lang.Override
    public java.lang.String getSaslMechanism() {
      java.lang.Object ref = saslMechanism_;
      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();
        saslMechanism_ = s;
        return s;
      }
    }
    /**
     * 
     * SASL mechanism to use for connection to the cluster.
     * 
     *
     * string sasl_mechanism = 4;
     * @return The bytes for saslMechanism.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSaslMechanismBytes() {
      java.lang.Object ref = saslMechanism_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        saslMechanism_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SECURITY_PROTOCOL_FIELD_NUMBER = 5;
    private volatile java.lang.Object securityProtocol_;
    /**
     * 
     * Security protocol to use for connection to the cluster.
     * 
     *
     * string security_protocol = 5;
     * @return The securityProtocol.
     */
    @java.lang.Override
    public java.lang.String getSecurityProtocol() {
      java.lang.Object ref = securityProtocol_;
      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();
        securityProtocol_ = s;
        return s;
      }
    }
    /**
     * 
     * Security protocol to use for connection to the cluster.
     * 
     *
     * string security_protocol = 5;
     * @return The bytes for securityProtocol.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSecurityProtocolBytes() {
      java.lang.Object ref = securityProtocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        securityProtocol_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SSL_TRUSTSTORE_CERTIFICATES_FIELD_NUMBER = 6;
    private volatile java.lang.Object sslTruststoreCertificates_;
    /**
     * 
     * CA in PEM format to connect to external cluster.
     * Lines of certificate separated by '\n' symbol.
     * 
     *
     * string ssl_truststore_certificates = 6;
     * @return The sslTruststoreCertificates.
     */
    @java.lang.Override
    public java.lang.String getSslTruststoreCertificates() {
      java.lang.Object ref = sslTruststoreCertificates_;
      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();
        sslTruststoreCertificates_ = s;
        return s;
      }
    }
    /**
     * 
     * CA in PEM format to connect to external cluster.
     * Lines of certificate separated by '\n' symbol.
     * 
     *
     * string ssl_truststore_certificates = 6;
     * @return The bytes for sslTruststoreCertificates.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSslTruststoreCertificatesBytes() {
      java.lang.Object ref = sslTruststoreCertificates_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sslTruststoreCertificates_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bootstrapServers_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, bootstrapServers_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslUsername_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, saslUsername_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslPassword_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, saslPassword_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslMechanism_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, saslMechanism_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(securityProtocol_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, securityProtocol_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sslTruststoreCertificates_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, sslTruststoreCertificates_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bootstrapServers_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, bootstrapServers_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslUsername_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, saslUsername_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslPassword_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, saslPassword_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslMechanism_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, saslMechanism_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(securityProtocol_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, securityProtocol_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sslTruststoreCertificates_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, sslTruststoreCertificates_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) obj;
      if (!getBootstrapServers()
          .equals(other.getBootstrapServers())) return false;
      if (!getSaslUsername()
          .equals(other.getSaslUsername())) return false;
      if (!getSaslPassword()
          .equals(other.getSaslPassword())) return false;
      if (!getSaslMechanism()
          .equals(other.getSaslMechanism())) return false;
      if (!getSecurityProtocol()
          .equals(other.getSecurityProtocol())) return false;
      if (!getSslTruststoreCertificates()
          .equals(other.getSslTruststoreCertificates())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + BOOTSTRAP_SERVERS_FIELD_NUMBER;
      hash = (53 * hash) + getBootstrapServers().hashCode();
      hash = (37 * hash) + SASL_USERNAME_FIELD_NUMBER;
      hash = (53 * hash) + getSaslUsername().hashCode();
      hash = (37 * hash) + SASL_PASSWORD_FIELD_NUMBER;
      hash = (53 * hash) + getSaslPassword().hashCode();
      hash = (37 * hash) + SASL_MECHANISM_FIELD_NUMBER;
      hash = (53 * hash) + getSaslMechanism().hashCode();
      hash = (37 * hash) + SECURITY_PROTOCOL_FIELD_NUMBER;
      hash = (53 * hash) + getSecurityProtocol().hashCode();
      hash = (37 * hash) + SSL_TRUSTSTORE_CERTIFICATES_FIELD_NUMBER;
      hash = (53 * hash) + getSslTruststoreCertificates().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec 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 yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.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();
        bootstrapServers_ = "";
        saslUsername_ = "";
        saslPassword_ = "";
        saslMechanism_ = "";
        securityProtocol_ = "";
        sslTruststoreCertificates_ = "";
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec(this);
        result.bootstrapServers_ = bootstrapServers_;
        result.saslUsername_ = saslUsername_;
        result.saslPassword_ = saslPassword_;
        result.saslMechanism_ = saslMechanism_;
        result.securityProtocol_ = securityProtocol_;
        result.sslTruststoreCertificates_ = sslTruststoreCertificates_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec.getDefaultInstance()) return this;
        if (!other.getBootstrapServers().isEmpty()) {
          bootstrapServers_ = other.bootstrapServers_;
          onChanged();
        }
        if (!other.getSaslUsername().isEmpty()) {
          saslUsername_ = other.saslUsername_;
          onChanged();
        }
        if (!other.getSaslPassword().isEmpty()) {
          saslPassword_ = other.saslPassword_;
          onChanged();
        }
        if (!other.getSaslMechanism().isEmpty()) {
          saslMechanism_ = other.saslMechanism_;
          onChanged();
        }
        if (!other.getSecurityProtocol().isEmpty()) {
          securityProtocol_ = other.securityProtocol_;
          onChanged();
        }
        if (!other.getSslTruststoreCertificates().isEmpty()) {
          sslTruststoreCertificates_ = other.sslTruststoreCertificates_;
          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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object bootstrapServers_ = "";
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @return The bootstrapServers.
       */
      public java.lang.String getBootstrapServers() {
        java.lang.Object ref = bootstrapServers_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          bootstrapServers_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @return The bytes for bootstrapServers.
       */
      public com.google.protobuf.ByteString
          getBootstrapServersBytes() {
        java.lang.Object ref = bootstrapServers_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bootstrapServers_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @param value The bootstrapServers to set.
       * @return This builder for chaining.
       */
      public Builder setBootstrapServers(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        bootstrapServers_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @return This builder for chaining.
       */
      public Builder clearBootstrapServers() {
        
        bootstrapServers_ = getDefaultInstance().getBootstrapServers();
        onChanged();
        return this;
      }
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @param value The bytes for bootstrapServers to set.
       * @return This builder for chaining.
       */
      public Builder setBootstrapServersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        bootstrapServers_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object saslUsername_ = "";
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @return The saslUsername.
       */
      public java.lang.String getSaslUsername() {
        java.lang.Object ref = saslUsername_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          saslUsername_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @return The bytes for saslUsername.
       */
      public com.google.protobuf.ByteString
          getSaslUsernameBytes() {
        java.lang.Object ref = saslUsername_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          saslUsername_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @param value The saslUsername to set.
       * @return This builder for chaining.
       */
      public Builder setSaslUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        saslUsername_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @return This builder for chaining.
       */
      public Builder clearSaslUsername() {
        
        saslUsername_ = getDefaultInstance().getSaslUsername();
        onChanged();
        return this;
      }
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @param value The bytes for saslUsername to set.
       * @return This builder for chaining.
       */
      public Builder setSaslUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        saslUsername_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object saslPassword_ = "";
      /**
       * 
       * SASL password to use for connection to the cluster.
       * 
       *
       * string sasl_password = 3;
       * @return The saslPassword.
       */
      public java.lang.String getSaslPassword() {
        java.lang.Object ref = saslPassword_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          saslPassword_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * SASL password to use for connection to the cluster.
       * 
       *
       * string sasl_password = 3;
       * @return The bytes for saslPassword.
       */
      public com.google.protobuf.ByteString
          getSaslPasswordBytes() {
        java.lang.Object ref = saslPassword_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          saslPassword_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * SASL password to use for connection to the cluster.
       * 
       *
       * string sasl_password = 3;
       * @param value The saslPassword to set.
       * @return This builder for chaining.
       */
      public Builder setSaslPassword(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        saslPassword_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * SASL password to use for connection to the cluster.
       * 
       *
       * string sasl_password = 3;
       * @return This builder for chaining.
       */
      public Builder clearSaslPassword() {
        
        saslPassword_ = getDefaultInstance().getSaslPassword();
        onChanged();
        return this;
      }
      /**
       * 
       * SASL password to use for connection to the cluster.
       * 
       *
       * string sasl_password = 3;
       * @param value The bytes for saslPassword to set.
       * @return This builder for chaining.
       */
      public Builder setSaslPasswordBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        saslPassword_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object saslMechanism_ = "";
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @return The saslMechanism.
       */
      public java.lang.String getSaslMechanism() {
        java.lang.Object ref = saslMechanism_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          saslMechanism_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @return The bytes for saslMechanism.
       */
      public com.google.protobuf.ByteString
          getSaslMechanismBytes() {
        java.lang.Object ref = saslMechanism_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          saslMechanism_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @param value The saslMechanism to set.
       * @return This builder for chaining.
       */
      public Builder setSaslMechanism(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        saslMechanism_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @return This builder for chaining.
       */
      public Builder clearSaslMechanism() {
        
        saslMechanism_ = getDefaultInstance().getSaslMechanism();
        onChanged();
        return this;
      }
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @param value The bytes for saslMechanism to set.
       * @return This builder for chaining.
       */
      public Builder setSaslMechanismBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        saslMechanism_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object securityProtocol_ = "";
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @return The securityProtocol.
       */
      public java.lang.String getSecurityProtocol() {
        java.lang.Object ref = securityProtocol_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          securityProtocol_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @return The bytes for securityProtocol.
       */
      public com.google.protobuf.ByteString
          getSecurityProtocolBytes() {
        java.lang.Object ref = securityProtocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          securityProtocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @param value The securityProtocol to set.
       * @return This builder for chaining.
       */
      public Builder setSecurityProtocol(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        securityProtocol_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @return This builder for chaining.
       */
      public Builder clearSecurityProtocol() {
        
        securityProtocol_ = getDefaultInstance().getSecurityProtocol();
        onChanged();
        return this;
      }
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @param value The bytes for securityProtocol to set.
       * @return This builder for chaining.
       */
      public Builder setSecurityProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        securityProtocol_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object sslTruststoreCertificates_ = "";
      /**
       * 
       * CA in PEM format to connect to external cluster.
       * Lines of certificate separated by '\n' symbol.
       * 
       *
       * string ssl_truststore_certificates = 6;
       * @return The sslTruststoreCertificates.
       */
      public java.lang.String getSslTruststoreCertificates() {
        java.lang.Object ref = sslTruststoreCertificates_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sslTruststoreCertificates_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * CA in PEM format to connect to external cluster.
       * Lines of certificate separated by '\n' symbol.
       * 
       *
       * string ssl_truststore_certificates = 6;
       * @return The bytes for sslTruststoreCertificates.
       */
      public com.google.protobuf.ByteString
          getSslTruststoreCertificatesBytes() {
        java.lang.Object ref = sslTruststoreCertificates_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sslTruststoreCertificates_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * CA in PEM format to connect to external cluster.
       * Lines of certificate separated by '\n' symbol.
       * 
       *
       * string ssl_truststore_certificates = 6;
       * @param value The sslTruststoreCertificates to set.
       * @return This builder for chaining.
       */
      public Builder setSslTruststoreCertificates(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sslTruststoreCertificates_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * CA in PEM format to connect to external cluster.
       * Lines of certificate separated by '\n' symbol.
       * 
       *
       * string ssl_truststore_certificates = 6;
       * @return This builder for chaining.
       */
      public Builder clearSslTruststoreCertificates() {
        
        sslTruststoreCertificates_ = getDefaultInstance().getSslTruststoreCertificates();
        onChanged();
        return this;
      }
      /**
       * 
       * CA in PEM format to connect to external cluster.
       * Lines of certificate separated by '\n' symbol.
       * 
       *
       * string ssl_truststore_certificates = 6;
       * @param value The bytes for sslTruststoreCertificates to set.
       * @return This builder for chaining.
       */
      public Builder setSslTruststoreCertificatesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sslTruststoreCertificates_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ExternalClusterConnectionSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExternalClusterConnectionSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ExternalClusterConnectionSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ConnectorConfigS3SinkSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The topics.
     */
    java.lang.String getTopics();
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The bytes for topics.
     */
    com.google.protobuf.ByteString
        getTopicsBytes();
    /**
     * 
     * The compression type used for files put on GCS.
     * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
     * Optional, the default is `none`.
     * 
     *
     * string file_compression_type = 2;
     * @return The fileCompressionType.
     */
    java.lang.String getFileCompressionType();
    /**
     * 
     * The compression type used for files put on GCS.
     * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
     * Optional, the default is `none`.
     * 
     *
     * string file_compression_type = 2;
     * @return The bytes for fileCompressionType.
     */
    com.google.protobuf.ByteString
        getFileCompressionTypeBytes();
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     * @return Whether the fileMaxRecords field is set.
     */
    boolean hasFileMaxRecords();
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     * @return The fileMaxRecords.
     */
    com.google.protobuf.Int64Value getFileMaxRecords();
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     */
    com.google.protobuf.Int64ValueOrBuilder getFileMaxRecordsOrBuilder();
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
     * @return Whether the s3Connection field is set.
     */
    boolean hasS3Connection();
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
     * @return The s3Connection.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec getS3Connection();
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder getS3ConnectionOrBuilder();
  }
  /**
   * 
   * Specification for Kafka S3-Sink Connector.
   * 
   *
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec}
   */
  public static final class ConnectorConfigS3SinkSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec)
      ConnectorConfigS3SinkSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectorConfigS3SinkSpec.newBuilder() to construct.
    private ConnectorConfigS3SinkSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ConnectorConfigS3SinkSpec() {
      topics_ = "";
      fileCompressionType_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectorConfigS3SinkSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectorConfigS3SinkSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              topics_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              fileCompressionType_ = s;
              break;
            }
            case 26: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (fileMaxRecords_ != null) {
                subBuilder = fileMaxRecords_.toBuilder();
              }
              fileMaxRecords_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fileMaxRecords_);
                fileMaxRecords_ = subBuilder.buildPartial();
              }
              break;
            }
            case 34: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder subBuilder = null;
              if (s3Connection_ != null) {
                subBuilder = s3Connection_.toBuilder();
              }
              s3Connection_ = input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(s3Connection_);
                s3Connection_ = subBuilder.buildPartial();
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.Builder.class);
    }
    public static final int TOPICS_FIELD_NUMBER = 1;
    private volatile java.lang.Object topics_;
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The topics.
     */
    @java.lang.Override
    public java.lang.String getTopics() {
      java.lang.Object ref = topics_;
      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();
        topics_ = s;
        return s;
      }
    }
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The bytes for topics.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTopicsBytes() {
      java.lang.Object ref = topics_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        topics_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int FILE_COMPRESSION_TYPE_FIELD_NUMBER = 2;
    private volatile java.lang.Object fileCompressionType_;
    /**
     * 
     * The compression type used for files put on GCS.
     * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
     * Optional, the default is `none`.
     * 
     *
     * string file_compression_type = 2;
     * @return The fileCompressionType.
     */
    @java.lang.Override
    public java.lang.String getFileCompressionType() {
      java.lang.Object ref = fileCompressionType_;
      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();
        fileCompressionType_ = s;
        return s;
      }
    }
    /**
     * 
     * The compression type used for files put on GCS.
     * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
     * Optional, the default is `none`.
     * 
     *
     * string file_compression_type = 2;
     * @return The bytes for fileCompressionType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFileCompressionTypeBytes() {
      java.lang.Object ref = fileCompressionType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fileCompressionType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int FILE_MAX_RECORDS_FIELD_NUMBER = 3;
    private com.google.protobuf.Int64Value fileMaxRecords_;
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     * @return Whether the fileMaxRecords field is set.
     */
    @java.lang.Override
    public boolean hasFileMaxRecords() {
      return fileMaxRecords_ != null;
    }
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     * @return The fileMaxRecords.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getFileMaxRecords() {
      return fileMaxRecords_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : fileMaxRecords_;
    }
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getFileMaxRecordsOrBuilder() {
      return getFileMaxRecords();
    }
    public static final int S3_CONNECTION_FIELD_NUMBER = 4;
    private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec s3Connection_;
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
     * @return Whether the s3Connection field is set.
     */
    @java.lang.Override
    public boolean hasS3Connection() {
      return s3Connection_ != null;
    }
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
     * @return The s3Connection.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec getS3Connection() {
      return s3Connection_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.getDefaultInstance() : s3Connection_;
    }
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder getS3ConnectionOrBuilder() {
      return getS3Connection();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, topics_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fileCompressionType_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, fileCompressionType_);
      }
      if (fileMaxRecords_ != null) {
        output.writeMessage(3, getFileMaxRecords());
      }
      if (s3Connection_ != null) {
        output.writeMessage(4, getS3Connection());
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, topics_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fileCompressionType_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, fileCompressionType_);
      }
      if (fileMaxRecords_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getFileMaxRecords());
      }
      if (s3Connection_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getS3Connection());
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) obj;
      if (!getTopics()
          .equals(other.getTopics())) return false;
      if (!getFileCompressionType()
          .equals(other.getFileCompressionType())) return false;
      if (hasFileMaxRecords() != other.hasFileMaxRecords()) return false;
      if (hasFileMaxRecords()) {
        if (!getFileMaxRecords()
            .equals(other.getFileMaxRecords())) return false;
      }
      if (hasS3Connection() != other.hasS3Connection()) return false;
      if (hasS3Connection()) {
        if (!getS3Connection()
            .equals(other.getS3Connection())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TOPICS_FIELD_NUMBER;
      hash = (53 * hash) + getTopics().hashCode();
      hash = (37 * hash) + FILE_COMPRESSION_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getFileCompressionType().hashCode();
      if (hasFileMaxRecords()) {
        hash = (37 * hash) + FILE_MAX_RECORDS_FIELD_NUMBER;
        hash = (53 * hash) + getFileMaxRecords().hashCode();
      }
      if (hasS3Connection()) {
        hash = (37 * hash) + S3_CONNECTION_FIELD_NUMBER;
        hash = (53 * hash) + getS3Connection().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec 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;
    }
    /**
     * 
     * Specification for Kafka S3-Sink Connector.
     * 
     *
     * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.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();
        topics_ = "";
        fileCompressionType_ = "";
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecords_ = null;
        } else {
          fileMaxRecords_ = null;
          fileMaxRecordsBuilder_ = null;
        }
        if (s3ConnectionBuilder_ == null) {
          s3Connection_ = null;
        } else {
          s3Connection_ = null;
          s3ConnectionBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec(this);
        result.topics_ = topics_;
        result.fileCompressionType_ = fileCompressionType_;
        if (fileMaxRecordsBuilder_ == null) {
          result.fileMaxRecords_ = fileMaxRecords_;
        } else {
          result.fileMaxRecords_ = fileMaxRecordsBuilder_.build();
        }
        if (s3ConnectionBuilder_ == null) {
          result.s3Connection_ = s3Connection_;
        } else {
          result.s3Connection_ = s3ConnectionBuilder_.build();
        }
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec.getDefaultInstance()) return this;
        if (!other.getTopics().isEmpty()) {
          topics_ = other.topics_;
          onChanged();
        }
        if (!other.getFileCompressionType().isEmpty()) {
          fileCompressionType_ = other.fileCompressionType_;
          onChanged();
        }
        if (other.hasFileMaxRecords()) {
          mergeFileMaxRecords(other.getFileMaxRecords());
        }
        if (other.hasS3Connection()) {
          mergeS3Connection(other.getS3Connection());
        }
        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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object topics_ = "";
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @return The topics.
       */
      public java.lang.String getTopics() {
        java.lang.Object ref = topics_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          topics_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @return The bytes for topics.
       */
      public com.google.protobuf.ByteString
          getTopicsBytes() {
        java.lang.Object ref = topics_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          topics_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @param value The topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopics(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        topics_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @return This builder for chaining.
       */
      public Builder clearTopics() {
        
        topics_ = getDefaultInstance().getTopics();
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @param value The bytes for topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopicsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        topics_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object fileCompressionType_ = "";
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @return The fileCompressionType.
       */
      public java.lang.String getFileCompressionType() {
        java.lang.Object ref = fileCompressionType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fileCompressionType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @return The bytes for fileCompressionType.
       */
      public com.google.protobuf.ByteString
          getFileCompressionTypeBytes() {
        java.lang.Object ref = fileCompressionType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fileCompressionType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @param value The fileCompressionType to set.
       * @return This builder for chaining.
       */
      public Builder setFileCompressionType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        fileCompressionType_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @return This builder for chaining.
       */
      public Builder clearFileCompressionType() {
        
        fileCompressionType_ = getDefaultInstance().getFileCompressionType();
        onChanged();
        return this;
      }
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @param value The bytes for fileCompressionType to set.
       * @return This builder for chaining.
       */
      public Builder setFileCompressionTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        fileCompressionType_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value fileMaxRecords_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> fileMaxRecordsBuilder_;
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       * @return Whether the fileMaxRecords field is set.
       */
      public boolean hasFileMaxRecords() {
        return fileMaxRecordsBuilder_ != null || fileMaxRecords_ != null;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       * @return The fileMaxRecords.
       */
      public com.google.protobuf.Int64Value getFileMaxRecords() {
        if (fileMaxRecordsBuilder_ == null) {
          return fileMaxRecords_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : fileMaxRecords_;
        } else {
          return fileMaxRecordsBuilder_.getMessage();
        }
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public Builder setFileMaxRecords(com.google.protobuf.Int64Value value) {
        if (fileMaxRecordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fileMaxRecords_ = value;
          onChanged();
        } else {
          fileMaxRecordsBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public Builder setFileMaxRecords(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecords_ = builderForValue.build();
          onChanged();
        } else {
          fileMaxRecordsBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public Builder mergeFileMaxRecords(com.google.protobuf.Int64Value value) {
        if (fileMaxRecordsBuilder_ == null) {
          if (fileMaxRecords_ != null) {
            fileMaxRecords_ =
              com.google.protobuf.Int64Value.newBuilder(fileMaxRecords_).mergeFrom(value).buildPartial();
          } else {
            fileMaxRecords_ = value;
          }
          onChanged();
        } else {
          fileMaxRecordsBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public Builder clearFileMaxRecords() {
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecords_ = null;
          onChanged();
        } else {
          fileMaxRecords_ = null;
          fileMaxRecordsBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public com.google.protobuf.Int64Value.Builder getFileMaxRecordsBuilder() {
        
        onChanged();
        return getFileMaxRecordsFieldBuilder().getBuilder();
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public com.google.protobuf.Int64ValueOrBuilder getFileMaxRecordsOrBuilder() {
        if (fileMaxRecordsBuilder_ != null) {
          return fileMaxRecordsBuilder_.getMessageOrBuilder();
        } else {
          return fileMaxRecords_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : fileMaxRecords_;
        }
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getFileMaxRecordsFieldBuilder() {
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecordsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getFileMaxRecords(),
                  getParentForChildren(),
                  isClean());
          fileMaxRecords_ = null;
        }
        return fileMaxRecordsBuilder_;
      }
      private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec s3Connection_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder> s3ConnectionBuilder_;
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
       * @return Whether the s3Connection field is set.
       */
      public boolean hasS3Connection() {
        return s3ConnectionBuilder_ != null || s3Connection_ != null;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
       * @return The s3Connection.
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec getS3Connection() {
        if (s3ConnectionBuilder_ == null) {
          return s3Connection_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.getDefaultInstance() : s3Connection_;
        } else {
          return s3ConnectionBuilder_.getMessage();
        }
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
       */
      public Builder setS3Connection(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec value) {
        if (s3ConnectionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          s3Connection_ = value;
          onChanged();
        } else {
          s3ConnectionBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
       */
      public Builder setS3Connection(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder builderForValue) {
        if (s3ConnectionBuilder_ == null) {
          s3Connection_ = builderForValue.build();
          onChanged();
        } else {
          s3ConnectionBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
       */
      public Builder mergeS3Connection(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec value) {
        if (s3ConnectionBuilder_ == null) {
          if (s3Connection_ != null) {
            s3Connection_ =
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.newBuilder(s3Connection_).mergeFrom(value).buildPartial();
          } else {
            s3Connection_ = value;
          }
          onChanged();
        } else {
          s3ConnectionBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
       */
      public Builder clearS3Connection() {
        if (s3ConnectionBuilder_ == null) {
          s3Connection_ = null;
          onChanged();
        } else {
          s3Connection_ = null;
          s3ConnectionBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder getS3ConnectionBuilder() {
        
        onChanged();
        return getS3ConnectionFieldBuilder().getBuilder();
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder getS3ConnectionOrBuilder() {
        if (s3ConnectionBuilder_ != null) {
          return s3ConnectionBuilder_.getMessageOrBuilder();
        } else {
          return s3Connection_ == null ?
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.getDefaultInstance() : s3Connection_;
        }
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder> 
          getS3ConnectionFieldBuilder() {
        if (s3ConnectionBuilder_ == null) {
          s3ConnectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder>(
                  getS3Connection(),
                  getParentForChildren(),
                  isClean());
          s3Connection_ = null;
        }
        return s3ConnectionBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3SinkSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ConnectorConfigS3SinkSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ConnectorConfigS3SinkSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface UpdateConnectorConfigS3SinkSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The topics.
     */
    java.lang.String getTopics();
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The bytes for topics.
     */
    com.google.protobuf.ByteString
        getTopicsBytes();
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 2;
     * @return Whether the fileMaxRecords field is set.
     */
    boolean hasFileMaxRecords();
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 2;
     * @return The fileMaxRecords.
     */
    com.google.protobuf.Int64Value getFileMaxRecords();
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 2;
     */
    com.google.protobuf.Int64ValueOrBuilder getFileMaxRecordsOrBuilder();
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
     * @return Whether the s3Connection field is set.
     */
    boolean hasS3Connection();
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
     * @return The s3Connection.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec getS3Connection();
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder getS3ConnectionOrBuilder();
  }
  /**
   * 
   * Specification for update Kafka S3-Sink Connector.
   * 
   *
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec}
   */
  public static final class UpdateConnectorConfigS3SinkSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec)
      UpdateConnectorConfigS3SinkSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UpdateConnectorConfigS3SinkSpec.newBuilder() to construct.
    private UpdateConnectorConfigS3SinkSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private UpdateConnectorConfigS3SinkSpec() {
      topics_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new UpdateConnectorConfigS3SinkSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UpdateConnectorConfigS3SinkSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              topics_ = s;
              break;
            }
            case 18: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (fileMaxRecords_ != null) {
                subBuilder = fileMaxRecords_.toBuilder();
              }
              fileMaxRecords_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fileMaxRecords_);
                fileMaxRecords_ = subBuilder.buildPartial();
              }
              break;
            }
            case 26: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder subBuilder = null;
              if (s3Connection_ != null) {
                subBuilder = s3Connection_.toBuilder();
              }
              s3Connection_ = input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(s3Connection_);
                s3Connection_ = subBuilder.buildPartial();
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.Builder.class);
    }
    public static final int TOPICS_FIELD_NUMBER = 1;
    private volatile java.lang.Object topics_;
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The topics.
     */
    @java.lang.Override
    public java.lang.String getTopics() {
      java.lang.Object ref = topics_;
      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();
        topics_ = s;
        return s;
      }
    }
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The bytes for topics.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTopicsBytes() {
      java.lang.Object ref = topics_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        topics_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int FILE_MAX_RECORDS_FIELD_NUMBER = 2;
    private com.google.protobuf.Int64Value fileMaxRecords_;
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 2;
     * @return Whether the fileMaxRecords field is set.
     */
    @java.lang.Override
    public boolean hasFileMaxRecords() {
      return fileMaxRecords_ != null;
    }
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 2;
     * @return The fileMaxRecords.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getFileMaxRecords() {
      return fileMaxRecords_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : fileMaxRecords_;
    }
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 2;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getFileMaxRecordsOrBuilder() {
      return getFileMaxRecords();
    }
    public static final int S3_CONNECTION_FIELD_NUMBER = 3;
    private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec s3Connection_;
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
     * @return Whether the s3Connection field is set.
     */
    @java.lang.Override
    public boolean hasS3Connection() {
      return s3Connection_ != null;
    }
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
     * @return The s3Connection.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec getS3Connection() {
      return s3Connection_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.getDefaultInstance() : s3Connection_;
    }
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder getS3ConnectionOrBuilder() {
      return getS3Connection();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, topics_);
      }
      if (fileMaxRecords_ != null) {
        output.writeMessage(2, getFileMaxRecords());
      }
      if (s3Connection_ != null) {
        output.writeMessage(3, getS3Connection());
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, topics_);
      }
      if (fileMaxRecords_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getFileMaxRecords());
      }
      if (s3Connection_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getS3Connection());
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) obj;
      if (!getTopics()
          .equals(other.getTopics())) return false;
      if (hasFileMaxRecords() != other.hasFileMaxRecords()) return false;
      if (hasFileMaxRecords()) {
        if (!getFileMaxRecords()
            .equals(other.getFileMaxRecords())) return false;
      }
      if (hasS3Connection() != other.hasS3Connection()) return false;
      if (hasS3Connection()) {
        if (!getS3Connection()
            .equals(other.getS3Connection())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TOPICS_FIELD_NUMBER;
      hash = (53 * hash) + getTopics().hashCode();
      if (hasFileMaxRecords()) {
        hash = (37 * hash) + FILE_MAX_RECORDS_FIELD_NUMBER;
        hash = (53 * hash) + getFileMaxRecords().hashCode();
      }
      if (hasS3Connection()) {
        hash = (37 * hash) + S3_CONNECTION_FIELD_NUMBER;
        hash = (53 * hash) + getS3Connection().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec 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;
    }
    /**
     * 
     * Specification for update Kafka S3-Sink Connector.
     * 
     *
     * Protobuf type {@code yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.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();
        topics_ = "";
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecords_ = null;
        } else {
          fileMaxRecords_ = null;
          fileMaxRecordsBuilder_ = null;
        }
        if (s3ConnectionBuilder_ == null) {
          s3Connection_ = null;
        } else {
          s3Connection_ = null;
          s3ConnectionBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec(this);
        result.topics_ = topics_;
        if (fileMaxRecordsBuilder_ == null) {
          result.fileMaxRecords_ = fileMaxRecords_;
        } else {
          result.fileMaxRecords_ = fileMaxRecordsBuilder_.build();
        }
        if (s3ConnectionBuilder_ == null) {
          result.s3Connection_ = s3Connection_;
        } else {
          result.s3Connection_ = s3ConnectionBuilder_.build();
        }
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec.getDefaultInstance()) return this;
        if (!other.getTopics().isEmpty()) {
          topics_ = other.topics_;
          onChanged();
        }
        if (other.hasFileMaxRecords()) {
          mergeFileMaxRecords(other.getFileMaxRecords());
        }
        if (other.hasS3Connection()) {
          mergeS3Connection(other.getS3Connection());
        }
        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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object topics_ = "";
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @return The topics.
       */
      public java.lang.String getTopics() {
        java.lang.Object ref = topics_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          topics_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @return The bytes for topics.
       */
      public com.google.protobuf.ByteString
          getTopicsBytes() {
        java.lang.Object ref = topics_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          topics_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @param value The topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopics(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        topics_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @return This builder for chaining.
       */
      public Builder clearTopics() {
        
        topics_ = getDefaultInstance().getTopics();
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @param value The bytes for topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopicsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        topics_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value fileMaxRecords_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> fileMaxRecordsBuilder_;
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 2;
       * @return Whether the fileMaxRecords field is set.
       */
      public boolean hasFileMaxRecords() {
        return fileMaxRecordsBuilder_ != null || fileMaxRecords_ != null;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 2;
       * @return The fileMaxRecords.
       */
      public com.google.protobuf.Int64Value getFileMaxRecords() {
        if (fileMaxRecordsBuilder_ == null) {
          return fileMaxRecords_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : fileMaxRecords_;
        } else {
          return fileMaxRecordsBuilder_.getMessage();
        }
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 2;
       */
      public Builder setFileMaxRecords(com.google.protobuf.Int64Value value) {
        if (fileMaxRecordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fileMaxRecords_ = value;
          onChanged();
        } else {
          fileMaxRecordsBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 2;
       */
      public Builder setFileMaxRecords(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecords_ = builderForValue.build();
          onChanged();
        } else {
          fileMaxRecordsBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 2;
       */
      public Builder mergeFileMaxRecords(com.google.protobuf.Int64Value value) {
        if (fileMaxRecordsBuilder_ == null) {
          if (fileMaxRecords_ != null) {
            fileMaxRecords_ =
              com.google.protobuf.Int64Value.newBuilder(fileMaxRecords_).mergeFrom(value).buildPartial();
          } else {
            fileMaxRecords_ = value;
          }
          onChanged();
        } else {
          fileMaxRecordsBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 2;
       */
      public Builder clearFileMaxRecords() {
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecords_ = null;
          onChanged();
        } else {
          fileMaxRecords_ = null;
          fileMaxRecordsBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 2;
       */
      public com.google.protobuf.Int64Value.Builder getFileMaxRecordsBuilder() {
        
        onChanged();
        return getFileMaxRecordsFieldBuilder().getBuilder();
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 2;
       */
      public com.google.protobuf.Int64ValueOrBuilder getFileMaxRecordsOrBuilder() {
        if (fileMaxRecordsBuilder_ != null) {
          return fileMaxRecordsBuilder_.getMessageOrBuilder();
        } else {
          return fileMaxRecords_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : fileMaxRecords_;
        }
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getFileMaxRecordsFieldBuilder() {
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecordsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getFileMaxRecords(),
                  getParentForChildren(),
                  isClean());
          fileMaxRecords_ = null;
        }
        return fileMaxRecordsBuilder_;
      }
      private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec s3Connection_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder> s3ConnectionBuilder_;
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
       * @return Whether the s3Connection field is set.
       */
      public boolean hasS3Connection() {
        return s3ConnectionBuilder_ != null || s3Connection_ != null;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
       * @return The s3Connection.
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec getS3Connection() {
        if (s3ConnectionBuilder_ == null) {
          return s3Connection_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.getDefaultInstance() : s3Connection_;
        } else {
          return s3ConnectionBuilder_.getMessage();
        }
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
       */
      public Builder setS3Connection(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec value) {
        if (s3ConnectionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          s3Connection_ = value;
          onChanged();
        } else {
          s3ConnectionBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
       */
      public Builder setS3Connection(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder builderForValue) {
        if (s3ConnectionBuilder_ == null) {
          s3Connection_ = builderForValue.build();
          onChanged();
        } else {
          s3ConnectionBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
       */
      public Builder mergeS3Connection(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec value) {
        if (s3ConnectionBuilder_ == null) {
          if (s3Connection_ != null) {
            s3Connection_ =
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.newBuilder(s3Connection_).mergeFrom(value).buildPartial();
          } else {
            s3Connection_ = value;
          }
          onChanged();
        } else {
          s3ConnectionBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
       */
      public Builder clearS3Connection() {
        if (s3ConnectionBuilder_ == null) {
          s3Connection_ = null;
          onChanged();
        } else {
          s3Connection_ = null;
          s3ConnectionBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder getS3ConnectionBuilder() {
        
        onChanged();
        return getS3ConnectionFieldBuilder().getBuilder();
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder getS3ConnectionOrBuilder() {
        if (s3ConnectionBuilder_ != null) {
          return s3ConnectionBuilder_.getMessageOrBuilder();
        } else {
          return s3Connection_ == null ?
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.getDefaultInstance() : s3Connection_;
        }
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3ConnectionSpec s3_connection = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder> 
          getS3ConnectionFieldBuilder() {
        if (s3ConnectionBuilder_ == null) {
          s3ConnectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder>(
                  getS3Connection(),
                  getParentForChildren(),
                  isClean());
          s3Connection_ = null;
        }
        return s3ConnectionBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.UpdateConnectorConfigS3SinkSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public UpdateConnectorConfigS3SinkSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UpdateConnectorConfigS3SinkSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.UpdateConnectorConfigS3SinkSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface S3ConnectionSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.S3ConnectionSpec)
      com.google.protobuf.MessageOrBuilder {
    /**
     * string bucket_name = 1;
     * @return The bucketName.
     */
    java.lang.String getBucketName();
    /**
     * string bucket_name = 1;
     * @return The bytes for bucketName.
     */
    com.google.protobuf.ByteString
        getBucketNameBytes();
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
     * @return Whether the externalS3 field is set.
     */
    boolean hasExternalS3();
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
     * @return The externalS3.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec getExternalS3();
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpecOrBuilder getExternalS3OrBuilder();
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.StorageCase getStorageCase();
  }
  /**
   * 
   * Specification for S3Connection -
   * settings of connection to AWS-compatible S3 storage, that
   * are source or target of Kafka S3-connectors.
   * YC Object Storage is AWS-compatible.
   * 
   *
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.S3ConnectionSpec}
   */
  public static final class S3ConnectionSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.S3ConnectionSpec)
      S3ConnectionSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use S3ConnectionSpec.newBuilder() to construct.
    private S3ConnectionSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private S3ConnectionSpec() {
      bucketName_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new S3ConnectionSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private S3ConnectionSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              bucketName_ = s;
              break;
            }
            case 18: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.Builder subBuilder = null;
              if (storageCase_ == 2) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_).toBuilder();
              }
              storage_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_);
                storage_ = subBuilder.buildPartial();
              }
              storageCase_ = 2;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder.class);
    }
    private int storageCase_ = 0;
    private java.lang.Object storage_;
    public enum StorageCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      EXTERNAL_S3(2),
      STORAGE_NOT_SET(0);
      private final int value;
      private StorageCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static StorageCase valueOf(int value) {
        return forNumber(value);
      }
      public static StorageCase forNumber(int value) {
        switch (value) {
          case 2: return EXTERNAL_S3;
          case 0: return STORAGE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public StorageCase
    getStorageCase() {
      return StorageCase.forNumber(
          storageCase_);
    }
    public static final int BUCKET_NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object bucketName_;
    /**
     * string bucket_name = 1;
     * @return The bucketName.
     */
    @java.lang.Override
    public java.lang.String getBucketName() {
      java.lang.Object ref = bucketName_;
      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();
        bucketName_ = s;
        return s;
      }
    }
    /**
     * string bucket_name = 1;
     * @return The bytes for bucketName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBucketNameBytes() {
      java.lang.Object ref = bucketName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bucketName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int EXTERNAL_S3_FIELD_NUMBER = 2;
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
     * @return Whether the externalS3 field is set.
     */
    @java.lang.Override
    public boolean hasExternalS3() {
      return storageCase_ == 2;
    }
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
     * @return The externalS3.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec getExternalS3() {
      if (storageCase_ == 2) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.getDefaultInstance();
    }
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpecOrBuilder getExternalS3OrBuilder() {
      if (storageCase_ == 2) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bucketName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, bucketName_);
      }
      if (storageCase_ == 2) {
        output.writeMessage(2, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bucketName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, bucketName_);
      }
      if (storageCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec) obj;
      if (!getBucketName()
          .equals(other.getBucketName())) return false;
      if (!getStorageCase().equals(other.getStorageCase())) return false;
      switch (storageCase_) {
        case 2:
          if (!getExternalS3()
              .equals(other.getExternalS3())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + BUCKET_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getBucketName().hashCode();
      switch (storageCase_) {
        case 2:
          hash = (37 * hash) + EXTERNAL_S3_FIELD_NUMBER;
          hash = (53 * hash) + getExternalS3().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec 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;
    }
    /**
     * 
     * Specification for S3Connection -
     * settings of connection to AWS-compatible S3 storage, that
     * are source or target of Kafka S3-connectors.
     * YC Object Storage is AWS-compatible.
     * 
     *
     * Protobuf type {@code yandex.cloud.mdb.kafka.v1.S3ConnectionSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.S3ConnectionSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.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();
        bucketName_ = "";
        storageCase_ = 0;
        storage_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec(this);
        result.bucketName_ = bucketName_;
        if (storageCase_ == 2) {
          if (externalS3Builder_ == null) {
            result.storage_ = storage_;
          } else {
            result.storage_ = externalS3Builder_.build();
          }
        }
        result.storageCase_ = storageCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec.getDefaultInstance()) return this;
        if (!other.getBucketName().isEmpty()) {
          bucketName_ = other.bucketName_;
          onChanged();
        }
        switch (other.getStorageCase()) {
          case EXTERNAL_S3: {
            mergeExternalS3(other.getExternalS3());
            break;
          }
          case STORAGE_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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int storageCase_ = 0;
      private java.lang.Object storage_;
      public StorageCase
          getStorageCase() {
        return StorageCase.forNumber(
            storageCase_);
      }
      public Builder clearStorage() {
        storageCase_ = 0;
        storage_ = null;
        onChanged();
        return this;
      }
      private java.lang.Object bucketName_ = "";
      /**
       * string bucket_name = 1;
       * @return The bucketName.
       */
      public java.lang.String getBucketName() {
        java.lang.Object ref = bucketName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          bucketName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string bucket_name = 1;
       * @return The bytes for bucketName.
       */
      public com.google.protobuf.ByteString
          getBucketNameBytes() {
        java.lang.Object ref = bucketName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bucketName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string bucket_name = 1;
       * @param value The bucketName to set.
       * @return This builder for chaining.
       */
      public Builder setBucketName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        bucketName_ = value;
        onChanged();
        return this;
      }
      /**
       * string bucket_name = 1;
       * @return This builder for chaining.
       */
      public Builder clearBucketName() {
        
        bucketName_ = getDefaultInstance().getBucketName();
        onChanged();
        return this;
      }
      /**
       * string bucket_name = 1;
       * @param value The bytes for bucketName to set.
       * @return This builder for chaining.
       */
      public Builder setBucketNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        bucketName_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpecOrBuilder> externalS3Builder_;
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
       * @return Whether the externalS3 field is set.
       */
      @java.lang.Override
      public boolean hasExternalS3() {
        return storageCase_ == 2;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
       * @return The externalS3.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec getExternalS3() {
        if (externalS3Builder_ == null) {
          if (storageCase_ == 2) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.getDefaultInstance();
        } else {
          if (storageCase_ == 2) {
            return externalS3Builder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.getDefaultInstance();
        }
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
       */
      public Builder setExternalS3(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec value) {
        if (externalS3Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          storage_ = value;
          onChanged();
        } else {
          externalS3Builder_.setMessage(value);
        }
        storageCase_ = 2;
        return this;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
       */
      public Builder setExternalS3(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.Builder builderForValue) {
        if (externalS3Builder_ == null) {
          storage_ = builderForValue.build();
          onChanged();
        } else {
          externalS3Builder_.setMessage(builderForValue.build());
        }
        storageCase_ = 2;
        return this;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
       */
      public Builder mergeExternalS3(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec value) {
        if (externalS3Builder_ == null) {
          if (storageCase_ == 2 &&
              storage_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.getDefaultInstance()) {
            storage_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_)
                .mergeFrom(value).buildPartial();
          } else {
            storage_ = value;
          }
          onChanged();
        } else {
          if (storageCase_ == 2) {
            externalS3Builder_.mergeFrom(value);
          }
          externalS3Builder_.setMessage(value);
        }
        storageCase_ = 2;
        return this;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
       */
      public Builder clearExternalS3() {
        if (externalS3Builder_ == null) {
          if (storageCase_ == 2) {
            storageCase_ = 0;
            storage_ = null;
            onChanged();
          }
        } else {
          if (storageCase_ == 2) {
            storageCase_ = 0;
            storage_ = null;
          }
          externalS3Builder_.clear();
        }
        return this;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.Builder getExternalS3Builder() {
        return getExternalS3FieldBuilder().getBuilder();
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpecOrBuilder getExternalS3OrBuilder() {
        if ((storageCase_ == 2) && (externalS3Builder_ != null)) {
          return externalS3Builder_.getMessageOrBuilder();
        } else {
          if (storageCase_ == 2) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.getDefaultInstance();
        }
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec external_s3 = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpecOrBuilder> 
          getExternalS3FieldBuilder() {
        if (externalS3Builder_ == null) {
          if (!(storageCase_ == 2)) {
            storage_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.getDefaultInstance();
          }
          externalS3Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpecOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) storage_,
                  getParentForChildren(),
                  isClean());
          storage_ = null;
        }
        storageCase_ = 2;
        onChanged();;
        return externalS3Builder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.S3ConnectionSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.S3ConnectionSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public S3ConnectionSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new S3ConnectionSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ExternalS3StorageSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec)
      com.google.protobuf.MessageOrBuilder {
    /**
     * string access_key_id = 1;
     * @return The accessKeyId.
     */
    java.lang.String getAccessKeyId();
    /**
     * string access_key_id = 1;
     * @return The bytes for accessKeyId.
     */
    com.google.protobuf.ByteString
        getAccessKeyIdBytes();
    /**
     * string secret_access_key = 2;
     * @return The secretAccessKey.
     */
    java.lang.String getSecretAccessKey();
    /**
     * string secret_access_key = 2;
     * @return The bytes for secretAccessKey.
     */
    com.google.protobuf.ByteString
        getSecretAccessKeyBytes();
    /**
     * string endpoint = 3;
     * @return The endpoint.
     */
    java.lang.String getEndpoint();
    /**
     * string endpoint = 3;
     * @return The bytes for endpoint.
     */
    com.google.protobuf.ByteString
        getEndpointBytes();
    /**
     * 
     * Default is 'us-east-1'.
     * 
     *
     * string region = 4;
     * @return The region.
     */
    java.lang.String getRegion();
    /**
     * 
     * Default is 'us-east-1'.
     * 
     *
     * string region = 4;
     * @return The bytes for region.
     */
    com.google.protobuf.ByteString
        getRegionBytes();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec}
   */
  public static final class ExternalS3StorageSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec)
      ExternalS3StorageSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExternalS3StorageSpec.newBuilder() to construct.
    private ExternalS3StorageSpec(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ExternalS3StorageSpec() {
      accessKeyId_ = "";
      secretAccessKey_ = "";
      endpoint_ = "";
      region_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExternalS3StorageSpec();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ExternalS3StorageSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              accessKeyId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              secretAccessKey_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              endpoint_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();
              region_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.Builder.class);
    }
    public static final int ACCESS_KEY_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object accessKeyId_;
    /**
     * string access_key_id = 1;
     * @return The accessKeyId.
     */
    @java.lang.Override
    public java.lang.String getAccessKeyId() {
      java.lang.Object ref = accessKeyId_;
      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();
        accessKeyId_ = s;
        return s;
      }
    }
    /**
     * string access_key_id = 1;
     * @return The bytes for accessKeyId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAccessKeyIdBytes() {
      java.lang.Object ref = accessKeyId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        accessKeyId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SECRET_ACCESS_KEY_FIELD_NUMBER = 2;
    private volatile java.lang.Object secretAccessKey_;
    /**
     * string secret_access_key = 2;
     * @return The secretAccessKey.
     */
    @java.lang.Override
    public java.lang.String getSecretAccessKey() {
      java.lang.Object ref = secretAccessKey_;
      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();
        secretAccessKey_ = s;
        return s;
      }
    }
    /**
     * string secret_access_key = 2;
     * @return The bytes for secretAccessKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSecretAccessKeyBytes() {
      java.lang.Object ref = secretAccessKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        secretAccessKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int ENDPOINT_FIELD_NUMBER = 3;
    private volatile java.lang.Object endpoint_;
    /**
     * string endpoint = 3;
     * @return The endpoint.
     */
    @java.lang.Override
    public java.lang.String getEndpoint() {
      java.lang.Object ref = endpoint_;
      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();
        endpoint_ = s;
        return s;
      }
    }
    /**
     * string endpoint = 3;
     * @return The bytes for endpoint.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEndpointBytes() {
      java.lang.Object ref = endpoint_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        endpoint_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int REGION_FIELD_NUMBER = 4;
    private volatile java.lang.Object region_;
    /**
     * 
     * Default is 'us-east-1'.
     * 
     *
     * string region = 4;
     * @return The region.
     */
    @java.lang.Override
    public java.lang.String getRegion() {
      java.lang.Object ref = region_;
      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();
        region_ = s;
        return s;
      }
    }
    /**
     * 
     * Default is 'us-east-1'.
     * 
     *
     * string region = 4;
     * @return The bytes for region.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRegionBytes() {
      java.lang.Object ref = region_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        region_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accessKeyId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, accessKeyId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(secretAccessKey_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, secretAccessKey_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpoint_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpoint_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(region_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, region_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accessKeyId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, accessKeyId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(secretAccessKey_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, secretAccessKey_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpoint_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpoint_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(region_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, region_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) obj;
      if (!getAccessKeyId()
          .equals(other.getAccessKeyId())) return false;
      if (!getSecretAccessKey()
          .equals(other.getSecretAccessKey())) return false;
      if (!getEndpoint()
          .equals(other.getEndpoint())) return false;
      if (!getRegion()
          .equals(other.getRegion())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACCESS_KEY_ID_FIELD_NUMBER;
      hash = (53 * hash) + getAccessKeyId().hashCode();
      hash = (37 * hash) + SECRET_ACCESS_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getSecretAccessKey().hashCode();
      hash = (37 * hash) + ENDPOINT_FIELD_NUMBER;
      hash = (53 * hash) + getEndpoint().hashCode();
      hash = (37 * hash) + REGION_FIELD_NUMBER;
      hash = (53 * hash) + getRegion().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec 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 yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.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();
        accessKeyId_ = "";
        secretAccessKey_ = "";
        endpoint_ = "";
        region_ = "";
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec(this);
        result.accessKeyId_ = accessKeyId_;
        result.secretAccessKey_ = secretAccessKey_;
        result.endpoint_ = endpoint_;
        result.region_ = region_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec.getDefaultInstance()) return this;
        if (!other.getAccessKeyId().isEmpty()) {
          accessKeyId_ = other.accessKeyId_;
          onChanged();
        }
        if (!other.getSecretAccessKey().isEmpty()) {
          secretAccessKey_ = other.secretAccessKey_;
          onChanged();
        }
        if (!other.getEndpoint().isEmpty()) {
          endpoint_ = other.endpoint_;
          onChanged();
        }
        if (!other.getRegion().isEmpty()) {
          region_ = other.region_;
          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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object accessKeyId_ = "";
      /**
       * string access_key_id = 1;
       * @return The accessKeyId.
       */
      public java.lang.String getAccessKeyId() {
        java.lang.Object ref = accessKeyId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          accessKeyId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string access_key_id = 1;
       * @return The bytes for accessKeyId.
       */
      public com.google.protobuf.ByteString
          getAccessKeyIdBytes() {
        java.lang.Object ref = accessKeyId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          accessKeyId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string access_key_id = 1;
       * @param value The accessKeyId to set.
       * @return This builder for chaining.
       */
      public Builder setAccessKeyId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        accessKeyId_ = value;
        onChanged();
        return this;
      }
      /**
       * string access_key_id = 1;
       * @return This builder for chaining.
       */
      public Builder clearAccessKeyId() {
        
        accessKeyId_ = getDefaultInstance().getAccessKeyId();
        onChanged();
        return this;
      }
      /**
       * string access_key_id = 1;
       * @param value The bytes for accessKeyId to set.
       * @return This builder for chaining.
       */
      public Builder setAccessKeyIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        accessKeyId_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object secretAccessKey_ = "";
      /**
       * string secret_access_key = 2;
       * @return The secretAccessKey.
       */
      public java.lang.String getSecretAccessKey() {
        java.lang.Object ref = secretAccessKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          secretAccessKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string secret_access_key = 2;
       * @return The bytes for secretAccessKey.
       */
      public com.google.protobuf.ByteString
          getSecretAccessKeyBytes() {
        java.lang.Object ref = secretAccessKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          secretAccessKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string secret_access_key = 2;
       * @param value The secretAccessKey to set.
       * @return This builder for chaining.
       */
      public Builder setSecretAccessKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        secretAccessKey_ = value;
        onChanged();
        return this;
      }
      /**
       * string secret_access_key = 2;
       * @return This builder for chaining.
       */
      public Builder clearSecretAccessKey() {
        
        secretAccessKey_ = getDefaultInstance().getSecretAccessKey();
        onChanged();
        return this;
      }
      /**
       * string secret_access_key = 2;
       * @param value The bytes for secretAccessKey to set.
       * @return This builder for chaining.
       */
      public Builder setSecretAccessKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        secretAccessKey_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object endpoint_ = "";
      /**
       * string endpoint = 3;
       * @return The endpoint.
       */
      public java.lang.String getEndpoint() {
        java.lang.Object ref = endpoint_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          endpoint_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string endpoint = 3;
       * @return The bytes for endpoint.
       */
      public com.google.protobuf.ByteString
          getEndpointBytes() {
        java.lang.Object ref = endpoint_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          endpoint_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string endpoint = 3;
       * @param value The endpoint to set.
       * @return This builder for chaining.
       */
      public Builder setEndpoint(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        endpoint_ = value;
        onChanged();
        return this;
      }
      /**
       * string endpoint = 3;
       * @return This builder for chaining.
       */
      public Builder clearEndpoint() {
        
        endpoint_ = getDefaultInstance().getEndpoint();
        onChanged();
        return this;
      }
      /**
       * string endpoint = 3;
       * @param value The bytes for endpoint to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        endpoint_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object region_ = "";
      /**
       * 
       * Default is 'us-east-1'.
       * 
       *
       * string region = 4;
       * @return The region.
       */
      public java.lang.String getRegion() {
        java.lang.Object ref = region_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          region_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Default is 'us-east-1'.
       * 
       *
       * string region = 4;
       * @return The bytes for region.
       */
      public com.google.protobuf.ByteString
          getRegionBytes() {
        java.lang.Object ref = region_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          region_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Default is 'us-east-1'.
       * 
       *
       * string region = 4;
       * @param value The region to set.
       * @return This builder for chaining.
       */
      public Builder setRegion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        region_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Default is 'us-east-1'.
       * 
       *
       * string region = 4;
       * @return This builder for chaining.
       */
      public Builder clearRegion() {
        
        region_ = getDefaultInstance().getRegion();
        onChanged();
        return this;
      }
      /**
       * 
       * Default is 'us-east-1'.
       * 
       *
       * string region = 4;
       * @param value The bytes for region to set.
       * @return This builder for chaining.
       */
      public Builder setRegionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        region_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ExternalS3StorageSpec)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExternalS3StorageSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ExternalS3StorageSpec(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ConnectorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.Connector)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Name of the connector.
     * 
     *
     * string name = 1;
     * @return The name.
     */
    java.lang.String getName();
    /**
     * 
     * Name of the connector.
     * 
     *
     * string name = 1;
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     * @return Whether the tasksMax field is set.
     */
    boolean hasTasksMax();
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     * @return The tasksMax.
     */
    com.google.protobuf.Int64Value getTasksMax();
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     */
    com.google.protobuf.Int64ValueOrBuilder getTasksMaxOrBuilder();
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    int getPropertiesCount();
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    boolean containsProperties(
        java.lang.String key);
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map
    getProperties();
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    java.util.Map
    getPropertiesMap();
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    java.lang.String getPropertiesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    java.lang.String getPropertiesOrThrow(
        java.lang.String key);
    /**
     * 
     * Connector health.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.Connector.Health health = 4;
     * @return The enum numeric value on the wire for health.
     */
    int getHealthValue();
    /**
     * 
     * Connector health.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.Connector.Health health = 4;
     * @return The health.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health getHealth();
    /**
     * 
     * Current status of the connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.Connector.Status status = 5;
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * 
     * Current status of the connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.Connector.Status status = 5;
     * @return The status.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status getStatus();
    /**
     * 
     * ID of the Apache Kafka® cluster that the connector belongs to.
     * 
     *
     * string cluster_id = 6;
     * @return The clusterId.
     */
    java.lang.String getClusterId();
    /**
     * 
     * ID of the Apache Kafka® cluster that the connector belongs to.
     * 
     *
     * string cluster_id = 6;
     * @return The bytes for clusterId.
     */
    com.google.protobuf.ByteString
        getClusterIdBytes();
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
     * @return Whether the connectorConfigMirrormaker field is set.
     */
    boolean hasConnectorConfigMirrormaker();
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
     * @return The connectorConfigMirrormaker.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker getConnectorConfigMirrormaker();
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerOrBuilder getConnectorConfigMirrormakerOrBuilder();
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
     * @return Whether the connectorConfigS3Sink field is set.
     */
    boolean hasConnectorConfigS3Sink();
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
     * @return The connectorConfigS3Sink.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink getConnectorConfigS3Sink();
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkOrBuilder getConnectorConfigS3SinkOrBuilder();
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.ConnectorConfigCase getConnectorConfigCase();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.Connector}
   */
  public static final class Connector extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.Connector)
      ConnectorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Connector.newBuilder() to construct.
    private Connector(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private Connector() {
      name_ = "";
      health_ = 0;
      status_ = 0;
      clusterId_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Connector();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Connector(
        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();
              name_ = s;
              break;
            }
            case 18: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (tasksMax_ != null) {
                subBuilder = tasksMax_.toBuilder();
              }
              tasksMax_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tasksMax_);
                tasksMax_ = subBuilder.buildPartial();
              }
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                properties_ = com.google.protobuf.MapField.newMapField(
                    PropertiesDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry
              properties__ = input.readMessage(
                  PropertiesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              properties_.getMutableMap().put(
                  properties__.getKey(), properties__.getValue());
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              health_ = rawValue;
              break;
            }
            case 40: {
              int rawValue = input.readEnum();
              status_ = rawValue;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();
              clusterId_ = s;
              break;
            }
            case 82: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.Builder subBuilder = null;
              if (connectorConfigCase_ == 10) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_).toBuilder();
              }
              connectorConfig_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_);
                connectorConfig_ = subBuilder.buildPartial();
              }
              connectorConfigCase_ = 10;
              break;
            }
            case 90: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.Builder subBuilder = null;
              if (connectorConfigCase_ == 11) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_).toBuilder();
              }
              connectorConfig_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_);
                connectorConfig_ = subBuilder.buildPartial();
              }
              connectorConfigCase_ = 11;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_Connector_descriptor;
    }
    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 3:
          return internalGetProperties();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_Connector_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Builder.class);
    }
    /**
     * Protobuf enum {@code yandex.cloud.mdb.kafka.v1.Connector.Health}
     */
    public enum Health
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * 
       * Health of the connector is unknown.
       * 
       *
       * HEALTH_UNKNOWN = 0;
       */
      HEALTH_UNKNOWN(0),
      /**
       * 
       * Connector is running.
       * 
       *
       * ALIVE = 1;
       */
      ALIVE(1),
      /**
       * 
       * Connector has failed to start.
       * 
       *
       * DEAD = 2;
       */
      DEAD(2),
      UNRECOGNIZED(-1),
      ;
      /**
       * 
       * Health of the connector is unknown.
       * 
       *
       * HEALTH_UNKNOWN = 0;
       */
      public static final int HEALTH_UNKNOWN_VALUE = 0;
      /**
       * 
       * Connector is running.
       * 
       *
       * ALIVE = 1;
       */
      public static final int ALIVE_VALUE = 1;
      /**
       * 
       * Connector has failed to start.
       * 
       *
       * DEAD = 2;
       */
      public static final int DEAD_VALUE = 2;
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Health valueOf(int value) {
        return forNumber(value);
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Health forNumber(int value) {
        switch (value) {
          case 0: return HEALTH_UNKNOWN;
          case 1: return ALIVE;
          case 2: return DEAD;
          default: return null;
        }
      }
      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Health> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public Health findValueByNumber(int number) {
                return Health.forNumber(number);
              }
            };
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.getDescriptor().getEnumTypes().get(0);
      }
      private static final Health[] VALUES = values();
      public static Health 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 Health(int value) {
        this.value = value;
      }
      // @@protoc_insertion_point(enum_scope:yandex.cloud.mdb.kafka.v1.Connector.Health)
    }
    /**
     * Protobuf enum {@code yandex.cloud.mdb.kafka.v1.Connector.Status}
     */
    public enum Status
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * 
       * Connector state is unknown.
       * 
       *
       * STATUS_UNKNOWN = 0;
       */
      STATUS_UNKNOWN(0),
      /**
       * 
       * Connector is running normally.
       * 
       *
       * RUNNING = 1;
       */
      RUNNING(1),
      /**
       * 
       * Connector has encountered a problem and cannot operate.
       * 
       *
       * ERROR = 2;
       */
      ERROR(2),
      /**
       * 
       * Connector is paused.
       * 
       *
       * PAUSED = 3;
       */
      PAUSED(3),
      UNRECOGNIZED(-1),
      ;
      /**
       * 
       * Connector state is unknown.
       * 
       *
       * STATUS_UNKNOWN = 0;
       */
      public static final int STATUS_UNKNOWN_VALUE = 0;
      /**
       * 
       * Connector is running normally.
       * 
       *
       * RUNNING = 1;
       */
      public static final int RUNNING_VALUE = 1;
      /**
       * 
       * Connector has encountered a problem and cannot operate.
       * 
       *
       * ERROR = 2;
       */
      public static final int ERROR_VALUE = 2;
      /**
       * 
       * Connector is paused.
       * 
       *
       * PAUSED = 3;
       */
      public static final int PAUSED_VALUE = 3;
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Status valueOf(int value) {
        return forNumber(value);
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Status forNumber(int value) {
        switch (value) {
          case 0: return STATUS_UNKNOWN;
          case 1: return RUNNING;
          case 2: return ERROR;
          case 3: return PAUSED;
          default: return null;
        }
      }
      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Status> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public Status findValueByNumber(int number) {
                return Status.forNumber(number);
              }
            };
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.getDescriptor().getEnumTypes().get(1);
      }
      private static final Status[] VALUES = values();
      public static Status 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 Status(int value) {
        this.value = value;
      }
      // @@protoc_insertion_point(enum_scope:yandex.cloud.mdb.kafka.v1.Connector.Status)
    }
    private int connectorConfigCase_ = 0;
    private java.lang.Object connectorConfig_;
    public enum ConnectorConfigCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      CONNECTOR_CONFIG_MIRRORMAKER(10),
      CONNECTOR_CONFIG_S3_SINK(11),
      CONNECTORCONFIG_NOT_SET(0);
      private final int value;
      private ConnectorConfigCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ConnectorConfigCase valueOf(int value) {
        return forNumber(value);
      }
      public static ConnectorConfigCase forNumber(int value) {
        switch (value) {
          case 10: return CONNECTOR_CONFIG_MIRRORMAKER;
          case 11: return CONNECTOR_CONFIG_S3_SINK;
          case 0: return CONNECTORCONFIG_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public ConnectorConfigCase
    getConnectorConfigCase() {
      return ConnectorConfigCase.forNumber(
          connectorConfigCase_);
    }
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * 
     * Name of the connector.
     * 
     *
     * string name = 1;
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * 
     * Name of the connector.
     * 
     *
     * string name = 1;
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int TASKS_MAX_FIELD_NUMBER = 2;
    private com.google.protobuf.Int64Value tasksMax_;
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     * @return Whether the tasksMax field is set.
     */
    @java.lang.Override
    public boolean hasTasksMax() {
      return tasksMax_ != null;
    }
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     * @return The tasksMax.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getTasksMax() {
      return tasksMax_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : tasksMax_;
    }
    /**
     * 
     * Maximum number of connector tasks. Default value is the number of brokers.
     * 
     *
     * .google.protobuf.Int64Value tasks_max = 2;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getTasksMaxOrBuilder() {
      return getTasksMax();
    }
    public static final int PROPERTIES_FIELD_NUMBER = 3;
    private static final class PropertiesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .newDefaultInstance(
                  yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_Connector_PropertiesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> properties_;
    private com.google.protobuf.MapField
    internalGetProperties() {
      if (properties_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            PropertiesDefaultEntryHolder.defaultEntry);
      }
      return properties_;
    }
    public int getPropertiesCount() {
      return internalGetProperties().getMap().size();
    }
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    @java.lang.Override
    public boolean containsProperties(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetProperties().getMap().containsKey(key);
    }
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map getProperties() {
      return getPropertiesMap();
    }
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    @java.lang.Override
    public java.util.Map getPropertiesMap() {
      return internalGetProperties().getMap();
    }
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    @java.lang.Override
    public java.lang.String getPropertiesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetProperties().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * 
     * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
     * Example: `sync.topics.config.enabled: true`.
     * 
     *
     * map<string, string> properties = 3;
     */
    @java.lang.Override
    public java.lang.String getPropertiesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetProperties().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }
    public static final int HEALTH_FIELD_NUMBER = 4;
    private int health_;
    /**
     * 
     * Connector health.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.Connector.Health health = 4;
     * @return The enum numeric value on the wire for health.
     */
    @java.lang.Override public int getHealthValue() {
      return health_;
    }
    /**
     * 
     * Connector health.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.Connector.Health health = 4;
     * @return The health.
     */
    @java.lang.Override public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health getHealth() {
      @SuppressWarnings("deprecation")
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health result = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health.valueOf(health_);
      return result == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health.UNRECOGNIZED : result;
    }
    public static final int STATUS_FIELD_NUMBER = 5;
    private int status_;
    /**
     * 
     * Current status of the connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.Connector.Status status = 5;
     * @return The enum numeric value on the wire for status.
     */
    @java.lang.Override public int getStatusValue() {
      return status_;
    }
    /**
     * 
     * Current status of the connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.Connector.Status status = 5;
     * @return The status.
     */
    @java.lang.Override public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status getStatus() {
      @SuppressWarnings("deprecation")
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status result = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status.valueOf(status_);
      return result == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status.UNRECOGNIZED : result;
    }
    public static final int CLUSTER_ID_FIELD_NUMBER = 6;
    private volatile java.lang.Object clusterId_;
    /**
     * 
     * ID of the Apache Kafka® cluster that the connector belongs to.
     * 
     *
     * string cluster_id = 6;
     * @return The clusterId.
     */
    @java.lang.Override
    public java.lang.String getClusterId() {
      java.lang.Object ref = clusterId_;
      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();
        clusterId_ = s;
        return s;
      }
    }
    /**
     * 
     * ID of the Apache Kafka® cluster that the connector belongs to.
     * 
     *
     * string cluster_id = 6;
     * @return The bytes for clusterId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getClusterIdBytes() {
      java.lang.Object ref = clusterId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        clusterId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int CONNECTOR_CONFIG_MIRRORMAKER_FIELD_NUMBER = 10;
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
     * @return Whether the connectorConfigMirrormaker field is set.
     */
    @java.lang.Override
    public boolean hasConnectorConfigMirrormaker() {
      return connectorConfigCase_ == 10;
    }
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
     * @return The connectorConfigMirrormaker.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker getConnectorConfigMirrormaker() {
      if (connectorConfigCase_ == 10) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.getDefaultInstance();
    }
    /**
     * 
     * Configuration of the MirrorMaker connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerOrBuilder getConnectorConfigMirrormakerOrBuilder() {
      if (connectorConfigCase_ == 10) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.getDefaultInstance();
    }
    public static final int CONNECTOR_CONFIG_S3_SINK_FIELD_NUMBER = 11;
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
     * @return Whether the connectorConfigS3Sink field is set.
     */
    @java.lang.Override
    public boolean hasConnectorConfigS3Sink() {
      return connectorConfigCase_ == 11;
    }
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
     * @return The connectorConfigS3Sink.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink getConnectorConfigS3Sink() {
      if (connectorConfigCase_ == 11) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.getDefaultInstance();
    }
    /**
     * 
     * Configuration of S3-Sink connector.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkOrBuilder getConnectorConfigS3SinkOrBuilder() {
      if (connectorConfigCase_ == 11) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (tasksMax_ != null) {
        output.writeMessage(2, getTasksMax());
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetProperties(),
          PropertiesDefaultEntryHolder.defaultEntry,
          3);
      if (health_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health.HEALTH_UNKNOWN.getNumber()) {
        output.writeEnum(4, health_);
      }
      if (status_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status.STATUS_UNKNOWN.getNumber()) {
        output.writeEnum(5, status_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clusterId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, clusterId_);
      }
      if (connectorConfigCase_ == 10) {
        output.writeMessage(10, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_);
      }
      if (connectorConfigCase_ == 11) {
        output.writeMessage(11, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (tasksMax_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTasksMax());
      }
      for (java.util.Map.Entry entry
           : internalGetProperties().getMap().entrySet()) {
        com.google.protobuf.MapEntry
        properties__ = PropertiesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, properties__);
      }
      if (health_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health.HEALTH_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, health_);
      }
      if (status_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status.STATUS_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, status_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clusterId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, clusterId_);
      }
      if (connectorConfigCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_);
      }
      if (connectorConfigCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector) obj;
      if (!getName()
          .equals(other.getName())) return false;
      if (hasTasksMax() != other.hasTasksMax()) return false;
      if (hasTasksMax()) {
        if (!getTasksMax()
            .equals(other.getTasksMax())) return false;
      }
      if (!internalGetProperties().equals(
          other.internalGetProperties())) return false;
      if (health_ != other.health_) return false;
      if (status_ != other.status_) return false;
      if (!getClusterId()
          .equals(other.getClusterId())) return false;
      if (!getConnectorConfigCase().equals(other.getConnectorConfigCase())) return false;
      switch (connectorConfigCase_) {
        case 10:
          if (!getConnectorConfigMirrormaker()
              .equals(other.getConnectorConfigMirrormaker())) return false;
          break;
        case 11:
          if (!getConnectorConfigS3Sink()
              .equals(other.getConnectorConfigS3Sink())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (hasTasksMax()) {
        hash = (37 * hash) + TASKS_MAX_FIELD_NUMBER;
        hash = (53 * hash) + getTasksMax().hashCode();
      }
      if (!internalGetProperties().getMap().isEmpty()) {
        hash = (37 * hash) + PROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetProperties().hashCode();
      }
      hash = (37 * hash) + HEALTH_FIELD_NUMBER;
      hash = (53 * hash) + health_;
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      hash = (37 * hash) + CLUSTER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getClusterId().hashCode();
      switch (connectorConfigCase_) {
        case 10:
          hash = (37 * hash) + CONNECTOR_CONFIG_MIRRORMAKER_FIELD_NUMBER;
          hash = (53 * hash) + getConnectorConfigMirrormaker().hashCode();
          break;
        case 11:
          hash = (37 * hash) + CONNECTOR_CONFIG_S3_SINK_FIELD_NUMBER;
          hash = (53 * hash) + getConnectorConfigS3Sink().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector 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 yandex.cloud.mdb.kafka.v1.Connector}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.Connector)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_Connector_descriptor;
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 3:
            return internalGetProperties();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 3:
            return internalGetMutableProperties();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_Connector_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";
        if (tasksMaxBuilder_ == null) {
          tasksMax_ = null;
        } else {
          tasksMax_ = null;
          tasksMaxBuilder_ = null;
        }
        internalGetMutableProperties().clear();
        health_ = 0;
        status_ = 0;
        clusterId_ = "";
        connectorConfigCase_ = 0;
        connectorConfig_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_Connector_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        if (tasksMaxBuilder_ == null) {
          result.tasksMax_ = tasksMax_;
        } else {
          result.tasksMax_ = tasksMaxBuilder_.build();
        }
        result.properties_ = internalGetProperties();
        result.properties_.makeImmutable();
        result.health_ = health_;
        result.status_ = status_;
        result.clusterId_ = clusterId_;
        if (connectorConfigCase_ == 10) {
          if (connectorConfigMirrormakerBuilder_ == null) {
            result.connectorConfig_ = connectorConfig_;
          } else {
            result.connectorConfig_ = connectorConfigMirrormakerBuilder_.build();
          }
        }
        if (connectorConfigCase_ == 11) {
          if (connectorConfigS3SinkBuilder_ == null) {
            result.connectorConfig_ = connectorConfig_;
          } else {
            result.connectorConfig_ = connectorConfigS3SinkBuilder_.build();
          }
        }
        result.connectorConfigCase_ = connectorConfigCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.hasTasksMax()) {
          mergeTasksMax(other.getTasksMax());
        }
        internalGetMutableProperties().mergeFrom(
            other.internalGetProperties());
        if (other.health_ != 0) {
          setHealthValue(other.getHealthValue());
        }
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        if (!other.getClusterId().isEmpty()) {
          clusterId_ = other.clusterId_;
          onChanged();
        }
        switch (other.getConnectorConfigCase()) {
          case CONNECTOR_CONFIG_MIRRORMAKER: {
            mergeConnectorConfigMirrormaker(other.getConnectorConfigMirrormaker());
            break;
          }
          case CONNECTOR_CONFIG_S3_SINK: {
            mergeConnectorConfigS3Sink(other.getConnectorConfigS3Sink());
            break;
          }
          case CONNECTORCONFIG_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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int connectorConfigCase_ = 0;
      private java.lang.Object connectorConfig_;
      public ConnectorConfigCase
          getConnectorConfigCase() {
        return ConnectorConfigCase.forNumber(
            connectorConfigCase_);
      }
      public Builder clearConnectorConfig() {
        connectorConfigCase_ = 0;
        connectorConfig_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the connector.
       * 
       *
       * string name = 1;
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value tasksMax_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> tasksMaxBuilder_;
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       * @return Whether the tasksMax field is set.
       */
      public boolean hasTasksMax() {
        return tasksMaxBuilder_ != null || tasksMax_ != null;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       * @return The tasksMax.
       */
      public com.google.protobuf.Int64Value getTasksMax() {
        if (tasksMaxBuilder_ == null) {
          return tasksMax_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : tasksMax_;
        } else {
          return tasksMaxBuilder_.getMessage();
        }
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public Builder setTasksMax(com.google.protobuf.Int64Value value) {
        if (tasksMaxBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tasksMax_ = value;
          onChanged();
        } else {
          tasksMaxBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public Builder setTasksMax(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (tasksMaxBuilder_ == null) {
          tasksMax_ = builderForValue.build();
          onChanged();
        } else {
          tasksMaxBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public Builder mergeTasksMax(com.google.protobuf.Int64Value value) {
        if (tasksMaxBuilder_ == null) {
          if (tasksMax_ != null) {
            tasksMax_ =
              com.google.protobuf.Int64Value.newBuilder(tasksMax_).mergeFrom(value).buildPartial();
          } else {
            tasksMax_ = value;
          }
          onChanged();
        } else {
          tasksMaxBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public Builder clearTasksMax() {
        if (tasksMaxBuilder_ == null) {
          tasksMax_ = null;
          onChanged();
        } else {
          tasksMax_ = null;
          tasksMaxBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public com.google.protobuf.Int64Value.Builder getTasksMaxBuilder() {
        
        onChanged();
        return getTasksMaxFieldBuilder().getBuilder();
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      public com.google.protobuf.Int64ValueOrBuilder getTasksMaxOrBuilder() {
        if (tasksMaxBuilder_ != null) {
          return tasksMaxBuilder_.getMessageOrBuilder();
        } else {
          return tasksMax_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : tasksMax_;
        }
      }
      /**
       * 
       * Maximum number of connector tasks. Default value is the number of brokers.
       * 
       *
       * .google.protobuf.Int64Value tasks_max = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getTasksMaxFieldBuilder() {
        if (tasksMaxBuilder_ == null) {
          tasksMaxBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getTasksMax(),
                  getParentForChildren(),
                  isClean());
          tasksMax_ = null;
        }
        return tasksMaxBuilder_;
      }
      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> properties_;
      private com.google.protobuf.MapField
      internalGetProperties() {
        if (properties_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              PropertiesDefaultEntryHolder.defaultEntry);
        }
        return properties_;
      }
      private com.google.protobuf.MapField
      internalGetMutableProperties() {
        onChanged();;
        if (properties_ == null) {
          properties_ = com.google.protobuf.MapField.newMapField(
              PropertiesDefaultEntryHolder.defaultEntry);
        }
        if (!properties_.isMutable()) {
          properties_ = properties_.copy();
        }
        return properties_;
      }
      public int getPropertiesCount() {
        return internalGetProperties().getMap().size();
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      @java.lang.Override
      public boolean containsProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetProperties().getMap().containsKey(key);
      }
      /**
       * Use {@link #getPropertiesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map getProperties() {
        return getPropertiesMap();
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      @java.lang.Override
      public java.util.Map getPropertiesMap() {
        return internalGetProperties().getMap();
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      @java.lang.Override
      public java.lang.String getPropertiesOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetProperties().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      @java.lang.Override
      public java.lang.String getPropertiesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetProperties().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearProperties() {
        internalGetMutableProperties().getMutableMap()
            .clear();
        return this;
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      public Builder removeProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableProperties().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map
      getMutableProperties() {
        return internalGetMutableProperties().getMutableMap();
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      public Builder putProperties(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) {
  throw new NullPointerException("map value");
}
        internalGetMutableProperties().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * 
       * A set of properties passed to Managed Service for Apache Kafka® with the connector configuration.
       * Example: `sync.topics.config.enabled: true`.
       * 
       *
       * map<string, string> properties = 3;
       */
      public Builder putAllProperties(
          java.util.Map values) {
        internalGetMutableProperties().getMutableMap()
            .putAll(values);
        return this;
      }
      private int health_ = 0;
      /**
       * 
       * Connector health.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Health health = 4;
       * @return The enum numeric value on the wire for health.
       */
      @java.lang.Override public int getHealthValue() {
        return health_;
      }
      /**
       * 
       * Connector health.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Health health = 4;
       * @param value The enum numeric value on the wire for health to set.
       * @return This builder for chaining.
       */
      public Builder setHealthValue(int value) {
        
        health_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Connector health.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Health health = 4;
       * @return The health.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health getHealth() {
        @SuppressWarnings("deprecation")
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health result = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health.valueOf(health_);
        return result == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health.UNRECOGNIZED : result;
      }
      /**
       * 
       * Connector health.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Health health = 4;
       * @param value The health to set.
       * @return This builder for chaining.
       */
      public Builder setHealth(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Health value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        health_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * 
       * Connector health.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Health health = 4;
       * @return This builder for chaining.
       */
      public Builder clearHealth() {
        
        health_ = 0;
        onChanged();
        return this;
      }
      private int status_ = 0;
      /**
       * 
       * Current status of the connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Status status = 5;
       * @return The enum numeric value on the wire for status.
       */
      @java.lang.Override public int getStatusValue() {
        return status_;
      }
      /**
       * 
       * Current status of the connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Status status = 5;
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Current status of the connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Status status = 5;
       * @return The status.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status getStatus() {
        @SuppressWarnings("deprecation")
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status result = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status.valueOf(status_);
        return result == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status.UNRECOGNIZED : result;
      }
      /**
       * 
       * Current status of the connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Status status = 5;
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector.Status value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * 
       * Current status of the connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.Connector.Status status = 5;
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }
      private java.lang.Object clusterId_ = "";
      /**
       * 
       * ID of the Apache Kafka® cluster that the connector belongs to.
       * 
       *
       * string cluster_id = 6;
       * @return The clusterId.
       */
      public java.lang.String getClusterId() {
        java.lang.Object ref = clusterId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          clusterId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * ID of the Apache Kafka® cluster that the connector belongs to.
       * 
       *
       * string cluster_id = 6;
       * @return The bytes for clusterId.
       */
      public com.google.protobuf.ByteString
          getClusterIdBytes() {
        java.lang.Object ref = clusterId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clusterId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * ID of the Apache Kafka® cluster that the connector belongs to.
       * 
       *
       * string cluster_id = 6;
       * @param value The clusterId to set.
       * @return This builder for chaining.
       */
      public Builder setClusterId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clusterId_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * ID of the Apache Kafka® cluster that the connector belongs to.
       * 
       *
       * string cluster_id = 6;
       * @return This builder for chaining.
       */
      public Builder clearClusterId() {
        
        clusterId_ = getDefaultInstance().getClusterId();
        onChanged();
        return this;
      }
      /**
       * 
       * ID of the Apache Kafka® cluster that the connector belongs to.
       * 
       *
       * string cluster_id = 6;
       * @param value The bytes for clusterId to set.
       * @return This builder for chaining.
       */
      public Builder setClusterIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clusterId_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerOrBuilder> connectorConfigMirrormakerBuilder_;
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
       * @return Whether the connectorConfigMirrormaker field is set.
       */
      @java.lang.Override
      public boolean hasConnectorConfigMirrormaker() {
        return connectorConfigCase_ == 10;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
       * @return The connectorConfigMirrormaker.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker getConnectorConfigMirrormaker() {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (connectorConfigCase_ == 10) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.getDefaultInstance();
        } else {
          if (connectorConfigCase_ == 10) {
            return connectorConfigMirrormakerBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
       */
      public Builder setConnectorConfigMirrormaker(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker value) {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connectorConfig_ = value;
          onChanged();
        } else {
          connectorConfigMirrormakerBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 10;
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
       */
      public Builder setConnectorConfigMirrormaker(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.Builder builderForValue) {
        if (connectorConfigMirrormakerBuilder_ == null) {
          connectorConfig_ = builderForValue.build();
          onChanged();
        } else {
          connectorConfigMirrormakerBuilder_.setMessage(builderForValue.build());
        }
        connectorConfigCase_ = 10;
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
       */
      public Builder mergeConnectorConfigMirrormaker(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker value) {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (connectorConfigCase_ == 10 &&
              connectorConfig_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.getDefaultInstance()) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_)
                .mergeFrom(value).buildPartial();
          } else {
            connectorConfig_ = value;
          }
          onChanged();
        } else {
          if (connectorConfigCase_ == 10) {
            connectorConfigMirrormakerBuilder_.mergeFrom(value);
          }
          connectorConfigMirrormakerBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 10;
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
       */
      public Builder clearConnectorConfigMirrormaker() {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (connectorConfigCase_ == 10) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
            onChanged();
          }
        } else {
          if (connectorConfigCase_ == 10) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
          }
          connectorConfigMirrormakerBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.Builder getConnectorConfigMirrormakerBuilder() {
        return getConnectorConfigMirrormakerFieldBuilder().getBuilder();
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerOrBuilder getConnectorConfigMirrormakerOrBuilder() {
        if ((connectorConfigCase_ == 10) && (connectorConfigMirrormakerBuilder_ != null)) {
          return connectorConfigMirrormakerBuilder_.getMessageOrBuilder();
        } else {
          if (connectorConfigCase_ == 10) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of the MirrorMaker connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker connector_config_mirrormaker = 10;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerOrBuilder> 
          getConnectorConfigMirrormakerFieldBuilder() {
        if (connectorConfigMirrormakerBuilder_ == null) {
          if (!(connectorConfigCase_ == 10)) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.getDefaultInstance();
          }
          connectorConfigMirrormakerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) connectorConfig_,
                  getParentForChildren(),
                  isClean());
          connectorConfig_ = null;
        }
        connectorConfigCase_ = 10;
        onChanged();;
        return connectorConfigMirrormakerBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkOrBuilder> connectorConfigS3SinkBuilder_;
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
       * @return Whether the connectorConfigS3Sink field is set.
       */
      @java.lang.Override
      public boolean hasConnectorConfigS3Sink() {
        return connectorConfigCase_ == 11;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
       * @return The connectorConfigS3Sink.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink getConnectorConfigS3Sink() {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (connectorConfigCase_ == 11) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.getDefaultInstance();
        } else {
          if (connectorConfigCase_ == 11) {
            return connectorConfigS3SinkBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
       */
      public Builder setConnectorConfigS3Sink(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink value) {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connectorConfig_ = value;
          onChanged();
        } else {
          connectorConfigS3SinkBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 11;
        return this;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
       */
      public Builder setConnectorConfigS3Sink(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.Builder builderForValue) {
        if (connectorConfigS3SinkBuilder_ == null) {
          connectorConfig_ = builderForValue.build();
          onChanged();
        } else {
          connectorConfigS3SinkBuilder_.setMessage(builderForValue.build());
        }
        connectorConfigCase_ = 11;
        return this;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
       */
      public Builder mergeConnectorConfigS3Sink(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink value) {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (connectorConfigCase_ == 11 &&
              connectorConfig_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.getDefaultInstance()) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_)
                .mergeFrom(value).buildPartial();
          } else {
            connectorConfig_ = value;
          }
          onChanged();
        } else {
          if (connectorConfigCase_ == 11) {
            connectorConfigS3SinkBuilder_.mergeFrom(value);
          }
          connectorConfigS3SinkBuilder_.setMessage(value);
        }
        connectorConfigCase_ = 11;
        return this;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
       */
      public Builder clearConnectorConfigS3Sink() {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (connectorConfigCase_ == 11) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
            onChanged();
          }
        } else {
          if (connectorConfigCase_ == 11) {
            connectorConfigCase_ = 0;
            connectorConfig_ = null;
          }
          connectorConfigS3SinkBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.Builder getConnectorConfigS3SinkBuilder() {
        return getConnectorConfigS3SinkFieldBuilder().getBuilder();
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkOrBuilder getConnectorConfigS3SinkOrBuilder() {
        if ((connectorConfigCase_ == 11) && (connectorConfigS3SinkBuilder_ != null)) {
          return connectorConfigS3SinkBuilder_.getMessageOrBuilder();
        } else {
          if (connectorConfigCase_ == 11) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of S3-Sink connector.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink connector_config_s3_sink = 11;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkOrBuilder> 
          getConnectorConfigS3SinkFieldBuilder() {
        if (connectorConfigS3SinkBuilder_ == null) {
          if (!(connectorConfigCase_ == 11)) {
            connectorConfig_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.getDefaultInstance();
          }
          connectorConfigS3SinkBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) connectorConfig_,
                  getParentForChildren(),
                  isClean());
          connectorConfig_ = null;
        }
        connectorConfigCase_ = 11;
        onChanged();;
        return connectorConfigS3SinkBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.Connector)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.Connector)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Connector parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Connector(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.Connector getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ConnectorConfigMirrorMakerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Source cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
     * @return Whether the sourceCluster field is set.
     */
    boolean hasSourceCluster();
    /**
     * 
     * Source cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
     * @return The sourceCluster.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection getSourceCluster();
    /**
     * 
     * Source cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder getSourceClusterOrBuilder();
    /**
     * 
     * Target cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
     * @return Whether the targetCluster field is set.
     */
    boolean hasTargetCluster();
    /**
     * 
     * Target cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
     * @return The targetCluster.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection getTargetCluster();
    /**
     * 
     * Target cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder getTargetClusterOrBuilder();
    /**
     * 
     * List of Kafka topics, separated by `,`.
     * 
     *
     * string topics = 3;
     * @return The topics.
     */
    java.lang.String getTopics();
    /**
     * 
     * List of Kafka topics, separated by `,`.
     * 
     *
     * string topics = 3;
     * @return The bytes for topics.
     */
    com.google.protobuf.ByteString
        getTopicsBytes();
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     * @return Whether the replicationFactor field is set.
     */
    boolean hasReplicationFactor();
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     * @return The replicationFactor.
     */
    com.google.protobuf.Int64Value getReplicationFactor();
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     */
    com.google.protobuf.Int64ValueOrBuilder getReplicationFactorOrBuilder();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker}
   */
  public static final class ConnectorConfigMirrorMaker extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker)
      ConnectorConfigMirrorMakerOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectorConfigMirrorMaker.newBuilder() to construct.
    private ConnectorConfigMirrorMaker(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ConnectorConfigMirrorMaker() {
      topics_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectorConfigMirrorMaker();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectorConfigMirrorMaker(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder subBuilder = null;
              if (sourceCluster_ != null) {
                subBuilder = sourceCluster_.toBuilder();
              }
              sourceCluster_ = input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sourceCluster_);
                sourceCluster_ = subBuilder.buildPartial();
              }
              break;
            }
            case 18: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder subBuilder = null;
              if (targetCluster_ != null) {
                subBuilder = targetCluster_.toBuilder();
              }
              targetCluster_ = input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(targetCluster_);
                targetCluster_ = subBuilder.buildPartial();
              }
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              topics_ = s;
              break;
            }
            case 34: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (replicationFactor_ != null) {
                subBuilder = replicationFactor_.toBuilder();
              }
              replicationFactor_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(replicationFactor_);
                replicationFactor_ = subBuilder.buildPartial();
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.Builder.class);
    }
    public static final int SOURCE_CLUSTER_FIELD_NUMBER = 1;
    private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection sourceCluster_;
    /**
     * 
     * Source cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
     * @return Whether the sourceCluster field is set.
     */
    @java.lang.Override
    public boolean hasSourceCluster() {
      return sourceCluster_ != null;
    }
    /**
     * 
     * Source cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
     * @return The sourceCluster.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection getSourceCluster() {
      return sourceCluster_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.getDefaultInstance() : sourceCluster_;
    }
    /**
     * 
     * Source cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder getSourceClusterOrBuilder() {
      return getSourceCluster();
    }
    public static final int TARGET_CLUSTER_FIELD_NUMBER = 2;
    private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection targetCluster_;
    /**
     * 
     * Target cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
     * @return Whether the targetCluster field is set.
     */
    @java.lang.Override
    public boolean hasTargetCluster() {
      return targetCluster_ != null;
    }
    /**
     * 
     * Target cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
     * @return The targetCluster.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection getTargetCluster() {
      return targetCluster_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.getDefaultInstance() : targetCluster_;
    }
    /**
     * 
     * Target cluster connection configuration.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder getTargetClusterOrBuilder() {
      return getTargetCluster();
    }
    public static final int TOPICS_FIELD_NUMBER = 3;
    private volatile java.lang.Object topics_;
    /**
     * 
     * List of Kafka topics, separated by `,`.
     * 
     *
     * string topics = 3;
     * @return The topics.
     */
    @java.lang.Override
    public java.lang.String getTopics() {
      java.lang.Object ref = topics_;
      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();
        topics_ = s;
        return s;
      }
    }
    /**
     * 
     * List of Kafka topics, separated by `,`.
     * 
     *
     * string topics = 3;
     * @return The bytes for topics.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTopicsBytes() {
      java.lang.Object ref = topics_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        topics_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int REPLICATION_FACTOR_FIELD_NUMBER = 4;
    private com.google.protobuf.Int64Value replicationFactor_;
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     * @return Whether the replicationFactor field is set.
     */
    @java.lang.Override
    public boolean hasReplicationFactor() {
      return replicationFactor_ != null;
    }
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     * @return The replicationFactor.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getReplicationFactor() {
      return replicationFactor_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : replicationFactor_;
    }
    /**
     * 
     * Replication factor for automatically created topics.
     * 
     *
     * .google.protobuf.Int64Value replication_factor = 4;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getReplicationFactorOrBuilder() {
      return getReplicationFactor();
    }
    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 (sourceCluster_ != null) {
        output.writeMessage(1, getSourceCluster());
      }
      if (targetCluster_ != null) {
        output.writeMessage(2, getTargetCluster());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, topics_);
      }
      if (replicationFactor_ != null) {
        output.writeMessage(4, getReplicationFactor());
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (sourceCluster_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSourceCluster());
      }
      if (targetCluster_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTargetCluster());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, topics_);
      }
      if (replicationFactor_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getReplicationFactor());
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) obj;
      if (hasSourceCluster() != other.hasSourceCluster()) return false;
      if (hasSourceCluster()) {
        if (!getSourceCluster()
            .equals(other.getSourceCluster())) return false;
      }
      if (hasTargetCluster() != other.hasTargetCluster()) return false;
      if (hasTargetCluster()) {
        if (!getTargetCluster()
            .equals(other.getTargetCluster())) return false;
      }
      if (!getTopics()
          .equals(other.getTopics())) return false;
      if (hasReplicationFactor() != other.hasReplicationFactor()) return false;
      if (hasReplicationFactor()) {
        if (!getReplicationFactor()
            .equals(other.getReplicationFactor())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSourceCluster()) {
        hash = (37 * hash) + SOURCE_CLUSTER_FIELD_NUMBER;
        hash = (53 * hash) + getSourceCluster().hashCode();
      }
      if (hasTargetCluster()) {
        hash = (37 * hash) + TARGET_CLUSTER_FIELD_NUMBER;
        hash = (53 * hash) + getTargetCluster().hashCode();
      }
      hash = (37 * hash) + TOPICS_FIELD_NUMBER;
      hash = (53 * hash) + getTopics().hashCode();
      if (hasReplicationFactor()) {
        hash = (37 * hash) + REPLICATION_FACTOR_FIELD_NUMBER;
        hash = (53 * hash) + getReplicationFactor().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker 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 yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMakerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.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();
        if (sourceClusterBuilder_ == null) {
          sourceCluster_ = null;
        } else {
          sourceCluster_ = null;
          sourceClusterBuilder_ = null;
        }
        if (targetClusterBuilder_ == null) {
          targetCluster_ = null;
        } else {
          targetCluster_ = null;
          targetClusterBuilder_ = null;
        }
        topics_ = "";
        if (replicationFactorBuilder_ == null) {
          replicationFactor_ = null;
        } else {
          replicationFactor_ = null;
          replicationFactorBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker(this);
        if (sourceClusterBuilder_ == null) {
          result.sourceCluster_ = sourceCluster_;
        } else {
          result.sourceCluster_ = sourceClusterBuilder_.build();
        }
        if (targetClusterBuilder_ == null) {
          result.targetCluster_ = targetCluster_;
        } else {
          result.targetCluster_ = targetClusterBuilder_.build();
        }
        result.topics_ = topics_;
        if (replicationFactorBuilder_ == null) {
          result.replicationFactor_ = replicationFactor_;
        } else {
          result.replicationFactor_ = replicationFactorBuilder_.build();
        }
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker.getDefaultInstance()) return this;
        if (other.hasSourceCluster()) {
          mergeSourceCluster(other.getSourceCluster());
        }
        if (other.hasTargetCluster()) {
          mergeTargetCluster(other.getTargetCluster());
        }
        if (!other.getTopics().isEmpty()) {
          topics_ = other.topics_;
          onChanged();
        }
        if (other.hasReplicationFactor()) {
          mergeReplicationFactor(other.getReplicationFactor());
        }
        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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection sourceCluster_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder> sourceClusterBuilder_;
      /**
       * 
       * Source cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
       * @return Whether the sourceCluster field is set.
       */
      public boolean hasSourceCluster() {
        return sourceClusterBuilder_ != null || sourceCluster_ != null;
      }
      /**
       * 
       * Source cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
       * @return The sourceCluster.
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection getSourceCluster() {
        if (sourceClusterBuilder_ == null) {
          return sourceCluster_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.getDefaultInstance() : sourceCluster_;
        } else {
          return sourceClusterBuilder_.getMessage();
        }
      }
      /**
       * 
       * Source cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
       */
      public Builder setSourceCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection value) {
        if (sourceClusterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sourceCluster_ = value;
          onChanged();
        } else {
          sourceClusterBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Source cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
       */
      public Builder setSourceCluster(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder builderForValue) {
        if (sourceClusterBuilder_ == null) {
          sourceCluster_ = builderForValue.build();
          onChanged();
        } else {
          sourceClusterBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Source cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
       */
      public Builder mergeSourceCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection value) {
        if (sourceClusterBuilder_ == null) {
          if (sourceCluster_ != null) {
            sourceCluster_ =
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.newBuilder(sourceCluster_).mergeFrom(value).buildPartial();
          } else {
            sourceCluster_ = value;
          }
          onChanged();
        } else {
          sourceClusterBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Source cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
       */
      public Builder clearSourceCluster() {
        if (sourceClusterBuilder_ == null) {
          sourceCluster_ = null;
          onChanged();
        } else {
          sourceCluster_ = null;
          sourceClusterBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Source cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder getSourceClusterBuilder() {
        
        onChanged();
        return getSourceClusterFieldBuilder().getBuilder();
      }
      /**
       * 
       * Source cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder getSourceClusterOrBuilder() {
        if (sourceClusterBuilder_ != null) {
          return sourceClusterBuilder_.getMessageOrBuilder();
        } else {
          return sourceCluster_ == null ?
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.getDefaultInstance() : sourceCluster_;
        }
      }
      /**
       * 
       * Source cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection source_cluster = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder> 
          getSourceClusterFieldBuilder() {
        if (sourceClusterBuilder_ == null) {
          sourceClusterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder>(
                  getSourceCluster(),
                  getParentForChildren(),
                  isClean());
          sourceCluster_ = null;
        }
        return sourceClusterBuilder_;
      }
      private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection targetCluster_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder> targetClusterBuilder_;
      /**
       * 
       * Target cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
       * @return Whether the targetCluster field is set.
       */
      public boolean hasTargetCluster() {
        return targetClusterBuilder_ != null || targetCluster_ != null;
      }
      /**
       * 
       * Target cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
       * @return The targetCluster.
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection getTargetCluster() {
        if (targetClusterBuilder_ == null) {
          return targetCluster_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.getDefaultInstance() : targetCluster_;
        } else {
          return targetClusterBuilder_.getMessage();
        }
      }
      /**
       * 
       * Target cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
       */
      public Builder setTargetCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection value) {
        if (targetClusterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          targetCluster_ = value;
          onChanged();
        } else {
          targetClusterBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Target cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
       */
      public Builder setTargetCluster(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder builderForValue) {
        if (targetClusterBuilder_ == null) {
          targetCluster_ = builderForValue.build();
          onChanged();
        } else {
          targetClusterBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Target cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
       */
      public Builder mergeTargetCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection value) {
        if (targetClusterBuilder_ == null) {
          if (targetCluster_ != null) {
            targetCluster_ =
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.newBuilder(targetCluster_).mergeFrom(value).buildPartial();
          } else {
            targetCluster_ = value;
          }
          onChanged();
        } else {
          targetClusterBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Target cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
       */
      public Builder clearTargetCluster() {
        if (targetClusterBuilder_ == null) {
          targetCluster_ = null;
          onChanged();
        } else {
          targetCluster_ = null;
          targetClusterBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Target cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder getTargetClusterBuilder() {
        
        onChanged();
        return getTargetClusterFieldBuilder().getBuilder();
      }
      /**
       * 
       * Target cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder getTargetClusterOrBuilder() {
        if (targetClusterBuilder_ != null) {
          return targetClusterBuilder_.getMessageOrBuilder();
        } else {
          return targetCluster_ == null ?
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.getDefaultInstance() : targetCluster_;
        }
      }
      /**
       * 
       * Target cluster connection configuration.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ClusterConnection target_cluster = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder> 
          getTargetClusterFieldBuilder() {
        if (targetClusterBuilder_ == null) {
          targetClusterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder>(
                  getTargetCluster(),
                  getParentForChildren(),
                  isClean());
          targetCluster_ = null;
        }
        return targetClusterBuilder_;
      }
      private java.lang.Object topics_ = "";
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @return The topics.
       */
      public java.lang.String getTopics() {
        java.lang.Object ref = topics_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          topics_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @return The bytes for topics.
       */
      public com.google.protobuf.ByteString
          getTopicsBytes() {
        java.lang.Object ref = topics_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          topics_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @param value The topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopics(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        topics_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @return This builder for chaining.
       */
      public Builder clearTopics() {
        
        topics_ = getDefaultInstance().getTopics();
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by `,`.
       * 
       *
       * string topics = 3;
       * @param value The bytes for topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopicsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        topics_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value replicationFactor_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> replicationFactorBuilder_;
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       * @return Whether the replicationFactor field is set.
       */
      public boolean hasReplicationFactor() {
        return replicationFactorBuilder_ != null || replicationFactor_ != null;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       * @return The replicationFactor.
       */
      public com.google.protobuf.Int64Value getReplicationFactor() {
        if (replicationFactorBuilder_ == null) {
          return replicationFactor_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : replicationFactor_;
        } else {
          return replicationFactorBuilder_.getMessage();
        }
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public Builder setReplicationFactor(com.google.protobuf.Int64Value value) {
        if (replicationFactorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          replicationFactor_ = value;
          onChanged();
        } else {
          replicationFactorBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public Builder setReplicationFactor(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (replicationFactorBuilder_ == null) {
          replicationFactor_ = builderForValue.build();
          onChanged();
        } else {
          replicationFactorBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public Builder mergeReplicationFactor(com.google.protobuf.Int64Value value) {
        if (replicationFactorBuilder_ == null) {
          if (replicationFactor_ != null) {
            replicationFactor_ =
              com.google.protobuf.Int64Value.newBuilder(replicationFactor_).mergeFrom(value).buildPartial();
          } else {
            replicationFactor_ = value;
          }
          onChanged();
        } else {
          replicationFactorBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public Builder clearReplicationFactor() {
        if (replicationFactorBuilder_ == null) {
          replicationFactor_ = null;
          onChanged();
        } else {
          replicationFactor_ = null;
          replicationFactorBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public com.google.protobuf.Int64Value.Builder getReplicationFactorBuilder() {
        
        onChanged();
        return getReplicationFactorFieldBuilder().getBuilder();
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      public com.google.protobuf.Int64ValueOrBuilder getReplicationFactorOrBuilder() {
        if (replicationFactorBuilder_ != null) {
          return replicationFactorBuilder_.getMessageOrBuilder();
        } else {
          return replicationFactor_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : replicationFactor_;
        }
      }
      /**
       * 
       * Replication factor for automatically created topics.
       * 
       *
       * .google.protobuf.Int64Value replication_factor = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getReplicationFactorFieldBuilder() {
        if (replicationFactorBuilder_ == null) {
          replicationFactorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getReplicationFactor(),
                  getParentForChildren(),
                  isClean());
          replicationFactor_ = null;
        }
        return replicationFactorBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ConnectorConfigMirrorMaker)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ConnectorConfigMirrorMaker parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ConnectorConfigMirrorMaker(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigMirrorMaker getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ClusterConnectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ClusterConnection)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Alias of cluster connection configuration.
     * Examples: `source`, `target`.
     * 
     *
     * string alias = 1;
     * @return The alias.
     */
    java.lang.String getAlias();
    /**
     * 
     * Alias of cluster connection configuration.
     * Examples: `source`, `target`.
     * 
     *
     * string alias = 1;
     * @return The bytes for alias.
     */
    com.google.protobuf.ByteString
        getAliasBytes();
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
     * @return Whether the thisCluster field is set.
     */
    boolean hasThisCluster();
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
     * @return The thisCluster.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster getThisCluster();
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterOrBuilder getThisClusterOrBuilder();
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
     * @return Whether the externalCluster field is set.
     */
    boolean hasExternalCluster();
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
     * @return The externalCluster.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection getExternalCluster();
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionOrBuilder getExternalClusterOrBuilder();
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.ClusterConnectionCase getClusterConnectionCase();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ClusterConnection}
   */
  public static final class ClusterConnection extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ClusterConnection)
      ClusterConnectionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClusterConnection.newBuilder() to construct.
    private ClusterConnection(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ClusterConnection() {
      alias_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ClusterConnection();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClusterConnection(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              alias_ = s;
              break;
            }
            case 18: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.Builder subBuilder = null;
              if (clusterConnectionCase_ == 2) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_).toBuilder();
              }
              clusterConnection_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_);
                clusterConnection_ = subBuilder.buildPartial();
              }
              clusterConnectionCase_ = 2;
              break;
            }
            case 26: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.Builder subBuilder = null;
              if (clusterConnectionCase_ == 3) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_).toBuilder();
              }
              clusterConnection_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_);
                clusterConnection_ = subBuilder.buildPartial();
              }
              clusterConnectionCase_ = 3;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder.class);
    }
    private int clusterConnectionCase_ = 0;
    private java.lang.Object clusterConnection_;
    public enum ClusterConnectionCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      THIS_CLUSTER(2),
      EXTERNAL_CLUSTER(3),
      CLUSTERCONNECTION_NOT_SET(0);
      private final int value;
      private ClusterConnectionCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ClusterConnectionCase valueOf(int value) {
        return forNumber(value);
      }
      public static ClusterConnectionCase forNumber(int value) {
        switch (value) {
          case 2: return THIS_CLUSTER;
          case 3: return EXTERNAL_CLUSTER;
          case 0: return CLUSTERCONNECTION_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public ClusterConnectionCase
    getClusterConnectionCase() {
      return ClusterConnectionCase.forNumber(
          clusterConnectionCase_);
    }
    public static final int ALIAS_FIELD_NUMBER = 1;
    private volatile java.lang.Object alias_;
    /**
     * 
     * Alias of cluster connection configuration.
     * Examples: `source`, `target`.
     * 
     *
     * string alias = 1;
     * @return The alias.
     */
    @java.lang.Override
    public java.lang.String getAlias() {
      java.lang.Object ref = alias_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        alias_ = s;
        return s;
      }
    }
    /**
     * 
     * Alias of cluster connection configuration.
     * Examples: `source`, `target`.
     * 
     *
     * string alias = 1;
     * @return The bytes for alias.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAliasBytes() {
      java.lang.Object ref = alias_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        alias_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int THIS_CLUSTER_FIELD_NUMBER = 2;
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
     * @return Whether the thisCluster field is set.
     */
    @java.lang.Override
    public boolean hasThisCluster() {
      return clusterConnectionCase_ == 2;
    }
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
     * @return The thisCluster.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster getThisCluster() {
      if (clusterConnectionCase_ == 2) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.getDefaultInstance();
    }
    /**
     * 
     * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterOrBuilder getThisClusterOrBuilder() {
      if (clusterConnectionCase_ == 2) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.getDefaultInstance();
    }
    public static final int EXTERNAL_CLUSTER_FIELD_NUMBER = 3;
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
     * @return Whether the externalCluster field is set.
     */
    @java.lang.Override
    public boolean hasExternalCluster() {
      return clusterConnectionCase_ == 3;
    }
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
     * @return The externalCluster.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection getExternalCluster() {
      if (clusterConnectionCase_ == 3) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.getDefaultInstance();
    }
    /**
     * 
     * Configuration of connection to an external cluster with all the necessary credentials.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionOrBuilder getExternalClusterOrBuilder() {
      if (clusterConnectionCase_ == 3) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alias_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, alias_);
      }
      if (clusterConnectionCase_ == 2) {
        output.writeMessage(2, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_);
      }
      if (clusterConnectionCase_ == 3) {
        output.writeMessage(3, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alias_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, alias_);
      }
      if (clusterConnectionCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_);
      }
      if (clusterConnectionCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection) obj;
      if (!getAlias()
          .equals(other.getAlias())) return false;
      if (!getClusterConnectionCase().equals(other.getClusterConnectionCase())) return false;
      switch (clusterConnectionCase_) {
        case 2:
          if (!getThisCluster()
              .equals(other.getThisCluster())) return false;
          break;
        case 3:
          if (!getExternalCluster()
              .equals(other.getExternalCluster())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ALIAS_FIELD_NUMBER;
      hash = (53 * hash) + getAlias().hashCode();
      switch (clusterConnectionCase_) {
        case 2:
          hash = (37 * hash) + THIS_CLUSTER_FIELD_NUMBER;
          hash = (53 * hash) + getThisCluster().hashCode();
          break;
        case 3:
          hash = (37 * hash) + EXTERNAL_CLUSTER_FIELD_NUMBER;
          hash = (53 * hash) + getExternalCluster().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection 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 yandex.cloud.mdb.kafka.v1.ClusterConnection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ClusterConnection)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.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();
        alias_ = "";
        clusterConnectionCase_ = 0;
        clusterConnection_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection(this);
        result.alias_ = alias_;
        if (clusterConnectionCase_ == 2) {
          if (thisClusterBuilder_ == null) {
            result.clusterConnection_ = clusterConnection_;
          } else {
            result.clusterConnection_ = thisClusterBuilder_.build();
          }
        }
        if (clusterConnectionCase_ == 3) {
          if (externalClusterBuilder_ == null) {
            result.clusterConnection_ = clusterConnection_;
          } else {
            result.clusterConnection_ = externalClusterBuilder_.build();
          }
        }
        result.clusterConnectionCase_ = clusterConnectionCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection.getDefaultInstance()) return this;
        if (!other.getAlias().isEmpty()) {
          alias_ = other.alias_;
          onChanged();
        }
        switch (other.getClusterConnectionCase()) {
          case THIS_CLUSTER: {
            mergeThisCluster(other.getThisCluster());
            break;
          }
          case EXTERNAL_CLUSTER: {
            mergeExternalCluster(other.getExternalCluster());
            break;
          }
          case CLUSTERCONNECTION_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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int clusterConnectionCase_ = 0;
      private java.lang.Object clusterConnection_;
      public ClusterConnectionCase
          getClusterConnectionCase() {
        return ClusterConnectionCase.forNumber(
            clusterConnectionCase_);
      }
      public Builder clearClusterConnection() {
        clusterConnectionCase_ = 0;
        clusterConnection_ = null;
        onChanged();
        return this;
      }
      private java.lang.Object alias_ = "";
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @return The alias.
       */
      public java.lang.String getAlias() {
        java.lang.Object ref = alias_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          alias_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @return The bytes for alias.
       */
      public com.google.protobuf.ByteString
          getAliasBytes() {
        java.lang.Object ref = alias_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          alias_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @param value The alias to set.
       * @return This builder for chaining.
       */
      public Builder setAlias(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        alias_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @return This builder for chaining.
       */
      public Builder clearAlias() {
        
        alias_ = getDefaultInstance().getAlias();
        onChanged();
        return this;
      }
      /**
       * 
       * Alias of cluster connection configuration.
       * Examples: `source`, `target`.
       * 
       *
       * string alias = 1;
       * @param value The bytes for alias to set.
       * @return This builder for chaining.
       */
      public Builder setAliasBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        alias_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterOrBuilder> thisClusterBuilder_;
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
       * @return Whether the thisCluster field is set.
       */
      @java.lang.Override
      public boolean hasThisCluster() {
        return clusterConnectionCase_ == 2;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
       * @return The thisCluster.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster getThisCluster() {
        if (thisClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 2) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.getDefaultInstance();
        } else {
          if (clusterConnectionCase_ == 2) {
            return thisClusterBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
       */
      public Builder setThisCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster value) {
        if (thisClusterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterConnection_ = value;
          onChanged();
        } else {
          thisClusterBuilder_.setMessage(value);
        }
        clusterConnectionCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
       */
      public Builder setThisCluster(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.Builder builderForValue) {
        if (thisClusterBuilder_ == null) {
          clusterConnection_ = builderForValue.build();
          onChanged();
        } else {
          thisClusterBuilder_.setMessage(builderForValue.build());
        }
        clusterConnectionCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
       */
      public Builder mergeThisCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster value) {
        if (thisClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 2 &&
              clusterConnection_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.getDefaultInstance()) {
            clusterConnection_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_)
                .mergeFrom(value).buildPartial();
          } else {
            clusterConnection_ = value;
          }
          onChanged();
        } else {
          if (clusterConnectionCase_ == 2) {
            thisClusterBuilder_.mergeFrom(value);
          }
          thisClusterBuilder_.setMessage(value);
        }
        clusterConnectionCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
       */
      public Builder clearThisCluster() {
        if (thisClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 2) {
            clusterConnectionCase_ = 0;
            clusterConnection_ = null;
            onChanged();
          }
        } else {
          if (clusterConnectionCase_ == 2) {
            clusterConnectionCase_ = 0;
            clusterConnection_ = null;
          }
          thisClusterBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.Builder getThisClusterBuilder() {
        return getThisClusterFieldBuilder().getBuilder();
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterOrBuilder getThisClusterOrBuilder() {
        if ((clusterConnectionCase_ == 2) && (thisClusterBuilder_ != null)) {
          return thisClusterBuilder_.getMessageOrBuilder();
        } else {
          if (clusterConnectionCase_ == 2) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection configuration of the cluster the connector belongs to. As all credentials are already known, leave this parameter empty.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ThisCluster this_cluster = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterOrBuilder> 
          getThisClusterFieldBuilder() {
        if (thisClusterBuilder_ == null) {
          if (!(clusterConnectionCase_ == 2)) {
            clusterConnection_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.getDefaultInstance();
          }
          thisClusterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) clusterConnection_,
                  getParentForChildren(),
                  isClean());
          clusterConnection_ = null;
        }
        clusterConnectionCase_ = 2;
        onChanged();;
        return thisClusterBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionOrBuilder> externalClusterBuilder_;
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
       * @return Whether the externalCluster field is set.
       */
      @java.lang.Override
      public boolean hasExternalCluster() {
        return clusterConnectionCase_ == 3;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
       * @return The externalCluster.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection getExternalCluster() {
        if (externalClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 3) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.getDefaultInstance();
        } else {
          if (clusterConnectionCase_ == 3) {
            return externalClusterBuilder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
       */
      public Builder setExternalCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection value) {
        if (externalClusterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterConnection_ = value;
          onChanged();
        } else {
          externalClusterBuilder_.setMessage(value);
        }
        clusterConnectionCase_ = 3;
        return this;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
       */
      public Builder setExternalCluster(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.Builder builderForValue) {
        if (externalClusterBuilder_ == null) {
          clusterConnection_ = builderForValue.build();
          onChanged();
        } else {
          externalClusterBuilder_.setMessage(builderForValue.build());
        }
        clusterConnectionCase_ = 3;
        return this;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
       */
      public Builder mergeExternalCluster(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection value) {
        if (externalClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 3 &&
              clusterConnection_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.getDefaultInstance()) {
            clusterConnection_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_)
                .mergeFrom(value).buildPartial();
          } else {
            clusterConnection_ = value;
          }
          onChanged();
        } else {
          if (clusterConnectionCase_ == 3) {
            externalClusterBuilder_.mergeFrom(value);
          }
          externalClusterBuilder_.setMessage(value);
        }
        clusterConnectionCase_ = 3;
        return this;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
       */
      public Builder clearExternalCluster() {
        if (externalClusterBuilder_ == null) {
          if (clusterConnectionCase_ == 3) {
            clusterConnectionCase_ = 0;
            clusterConnection_ = null;
            onChanged();
          }
        } else {
          if (clusterConnectionCase_ == 3) {
            clusterConnectionCase_ = 0;
            clusterConnection_ = null;
          }
          externalClusterBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.Builder getExternalClusterBuilder() {
        return getExternalClusterFieldBuilder().getBuilder();
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionOrBuilder getExternalClusterOrBuilder() {
        if ((clusterConnectionCase_ == 3) && (externalClusterBuilder_ != null)) {
          return externalClusterBuilder_.getMessageOrBuilder();
        } else {
          if (clusterConnectionCase_ == 3) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.getDefaultInstance();
        }
      }
      /**
       * 
       * Configuration of connection to an external cluster with all the necessary credentials.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.ExternalClusterConnection external_cluster = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionOrBuilder> 
          getExternalClusterFieldBuilder() {
        if (externalClusterBuilder_ == null) {
          if (!(clusterConnectionCase_ == 3)) {
            clusterConnection_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.getDefaultInstance();
          }
          externalClusterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) clusterConnection_,
                  getParentForChildren(),
                  isClean());
          clusterConnection_ = null;
        }
        clusterConnectionCase_ = 3;
        onChanged();;
        return externalClusterBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ClusterConnection)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ClusterConnection)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ClusterConnection parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ClusterConnection(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ClusterConnection getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ThisClusterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ThisCluster)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ThisCluster}
   */
  public static final class ThisCluster extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ThisCluster)
      ThisClusterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThisCluster.newBuilder() to construct.
    private ThisCluster(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ThisCluster() {
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThisCluster();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThisCluster(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.Builder.class);
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) obj;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster 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 yandex.cloud.mdb.kafka.v1.ThisCluster}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ThisCluster)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisClusterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster(this);
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ThisCluster)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ThisCluster)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ThisCluster parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ThisCluster(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ThisCluster getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ExternalClusterConnectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ExternalClusterConnection)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * List of bootstrap servers of the cluster, separated by `,`.
     * 
     *
     * string bootstrap_servers = 1;
     * @return The bootstrapServers.
     */
    java.lang.String getBootstrapServers();
    /**
     * 
     * List of bootstrap servers of the cluster, separated by `,`.
     * 
     *
     * string bootstrap_servers = 1;
     * @return The bytes for bootstrapServers.
     */
    com.google.protobuf.ByteString
        getBootstrapServersBytes();
    /**
     * 
     * SASL username to use for connection to the cluster.
     * 
     *
     * string sasl_username = 2;
     * @return The saslUsername.
     */
    java.lang.String getSaslUsername();
    /**
     * 
     * SASL username to use for connection to the cluster.
     * 
     *
     * string sasl_username = 2;
     * @return The bytes for saslUsername.
     */
    com.google.protobuf.ByteString
        getSaslUsernameBytes();
    /**
     * 
     * SASL mechanism to use for connection to the cluster.
     * 
     *
     * string sasl_mechanism = 4;
     * @return The saslMechanism.
     */
    java.lang.String getSaslMechanism();
    /**
     * 
     * SASL mechanism to use for connection to the cluster.
     * 
     *
     * string sasl_mechanism = 4;
     * @return The bytes for saslMechanism.
     */
    com.google.protobuf.ByteString
        getSaslMechanismBytes();
    /**
     * 
     * Security protocol to use for connection to the cluster.
     * 
     *
     * string security_protocol = 5;
     * @return The securityProtocol.
     */
    java.lang.String getSecurityProtocol();
    /**
     * 
     * Security protocol to use for connection to the cluster.
     * 
     *
     * string security_protocol = 5;
     * @return The bytes for securityProtocol.
     */
    com.google.protobuf.ByteString
        getSecurityProtocolBytes();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ExternalClusterConnection}
   */
  public static final class ExternalClusterConnection extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ExternalClusterConnection)
      ExternalClusterConnectionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExternalClusterConnection.newBuilder() to construct.
    private ExternalClusterConnection(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ExternalClusterConnection() {
      bootstrapServers_ = "";
      saslUsername_ = "";
      saslMechanism_ = "";
      securityProtocol_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExternalClusterConnection();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ExternalClusterConnection(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              bootstrapServers_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              saslUsername_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();
              saslMechanism_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();
              securityProtocol_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.Builder.class);
    }
    public static final int BOOTSTRAP_SERVERS_FIELD_NUMBER = 1;
    private volatile java.lang.Object bootstrapServers_;
    /**
     * 
     * List of bootstrap servers of the cluster, separated by `,`.
     * 
     *
     * string bootstrap_servers = 1;
     * @return The bootstrapServers.
     */
    @java.lang.Override
    public java.lang.String getBootstrapServers() {
      java.lang.Object ref = bootstrapServers_;
      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();
        bootstrapServers_ = s;
        return s;
      }
    }
    /**
     * 
     * List of bootstrap servers of the cluster, separated by `,`.
     * 
     *
     * string bootstrap_servers = 1;
     * @return The bytes for bootstrapServers.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBootstrapServersBytes() {
      java.lang.Object ref = bootstrapServers_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bootstrapServers_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SASL_USERNAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object saslUsername_;
    /**
     * 
     * SASL username to use for connection to the cluster.
     * 
     *
     * string sasl_username = 2;
     * @return The saslUsername.
     */
    @java.lang.Override
    public java.lang.String getSaslUsername() {
      java.lang.Object ref = saslUsername_;
      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();
        saslUsername_ = s;
        return s;
      }
    }
    /**
     * 
     * SASL username to use for connection to the cluster.
     * 
     *
     * string sasl_username = 2;
     * @return The bytes for saslUsername.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSaslUsernameBytes() {
      java.lang.Object ref = saslUsername_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        saslUsername_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SASL_MECHANISM_FIELD_NUMBER = 4;
    private volatile java.lang.Object saslMechanism_;
    /**
     * 
     * SASL mechanism to use for connection to the cluster.
     * 
     *
     * string sasl_mechanism = 4;
     * @return The saslMechanism.
     */
    @java.lang.Override
    public java.lang.String getSaslMechanism() {
      java.lang.Object ref = saslMechanism_;
      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();
        saslMechanism_ = s;
        return s;
      }
    }
    /**
     * 
     * SASL mechanism to use for connection to the cluster.
     * 
     *
     * string sasl_mechanism = 4;
     * @return The bytes for saslMechanism.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSaslMechanismBytes() {
      java.lang.Object ref = saslMechanism_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        saslMechanism_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SECURITY_PROTOCOL_FIELD_NUMBER = 5;
    private volatile java.lang.Object securityProtocol_;
    /**
     * 
     * Security protocol to use for connection to the cluster.
     * 
     *
     * string security_protocol = 5;
     * @return The securityProtocol.
     */
    @java.lang.Override
    public java.lang.String getSecurityProtocol() {
      java.lang.Object ref = securityProtocol_;
      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();
        securityProtocol_ = s;
        return s;
      }
    }
    /**
     * 
     * Security protocol to use for connection to the cluster.
     * 
     *
     * string security_protocol = 5;
     * @return The bytes for securityProtocol.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSecurityProtocolBytes() {
      java.lang.Object ref = securityProtocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        securityProtocol_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bootstrapServers_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, bootstrapServers_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslUsername_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, saslUsername_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslMechanism_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, saslMechanism_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(securityProtocol_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, securityProtocol_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bootstrapServers_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, bootstrapServers_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslUsername_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, saslUsername_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(saslMechanism_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, saslMechanism_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(securityProtocol_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, securityProtocol_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) obj;
      if (!getBootstrapServers()
          .equals(other.getBootstrapServers())) return false;
      if (!getSaslUsername()
          .equals(other.getSaslUsername())) return false;
      if (!getSaslMechanism()
          .equals(other.getSaslMechanism())) return false;
      if (!getSecurityProtocol()
          .equals(other.getSecurityProtocol())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + BOOTSTRAP_SERVERS_FIELD_NUMBER;
      hash = (53 * hash) + getBootstrapServers().hashCode();
      hash = (37 * hash) + SASL_USERNAME_FIELD_NUMBER;
      hash = (53 * hash) + getSaslUsername().hashCode();
      hash = (37 * hash) + SASL_MECHANISM_FIELD_NUMBER;
      hash = (53 * hash) + getSaslMechanism().hashCode();
      hash = (37 * hash) + SECURITY_PROTOCOL_FIELD_NUMBER;
      hash = (53 * hash) + getSecurityProtocol().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection 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 yandex.cloud.mdb.kafka.v1.ExternalClusterConnection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ExternalClusterConnection)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.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();
        bootstrapServers_ = "";
        saslUsername_ = "";
        saslMechanism_ = "";
        securityProtocol_ = "";
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection(this);
        result.bootstrapServers_ = bootstrapServers_;
        result.saslUsername_ = saslUsername_;
        result.saslMechanism_ = saslMechanism_;
        result.securityProtocol_ = securityProtocol_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection.getDefaultInstance()) return this;
        if (!other.getBootstrapServers().isEmpty()) {
          bootstrapServers_ = other.bootstrapServers_;
          onChanged();
        }
        if (!other.getSaslUsername().isEmpty()) {
          saslUsername_ = other.saslUsername_;
          onChanged();
        }
        if (!other.getSaslMechanism().isEmpty()) {
          saslMechanism_ = other.saslMechanism_;
          onChanged();
        }
        if (!other.getSecurityProtocol().isEmpty()) {
          securityProtocol_ = other.securityProtocol_;
          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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object bootstrapServers_ = "";
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @return The bootstrapServers.
       */
      public java.lang.String getBootstrapServers() {
        java.lang.Object ref = bootstrapServers_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          bootstrapServers_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @return The bytes for bootstrapServers.
       */
      public com.google.protobuf.ByteString
          getBootstrapServersBytes() {
        java.lang.Object ref = bootstrapServers_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bootstrapServers_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @param value The bootstrapServers to set.
       * @return This builder for chaining.
       */
      public Builder setBootstrapServers(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        bootstrapServers_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @return This builder for chaining.
       */
      public Builder clearBootstrapServers() {
        
        bootstrapServers_ = getDefaultInstance().getBootstrapServers();
        onChanged();
        return this;
      }
      /**
       * 
       * List of bootstrap servers of the cluster, separated by `,`.
       * 
       *
       * string bootstrap_servers = 1;
       * @param value The bytes for bootstrapServers to set.
       * @return This builder for chaining.
       */
      public Builder setBootstrapServersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        bootstrapServers_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object saslUsername_ = "";
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @return The saslUsername.
       */
      public java.lang.String getSaslUsername() {
        java.lang.Object ref = saslUsername_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          saslUsername_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @return The bytes for saslUsername.
       */
      public com.google.protobuf.ByteString
          getSaslUsernameBytes() {
        java.lang.Object ref = saslUsername_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          saslUsername_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @param value The saslUsername to set.
       * @return This builder for chaining.
       */
      public Builder setSaslUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        saslUsername_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @return This builder for chaining.
       */
      public Builder clearSaslUsername() {
        
        saslUsername_ = getDefaultInstance().getSaslUsername();
        onChanged();
        return this;
      }
      /**
       * 
       * SASL username to use for connection to the cluster.
       * 
       *
       * string sasl_username = 2;
       * @param value The bytes for saslUsername to set.
       * @return This builder for chaining.
       */
      public Builder setSaslUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        saslUsername_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object saslMechanism_ = "";
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @return The saslMechanism.
       */
      public java.lang.String getSaslMechanism() {
        java.lang.Object ref = saslMechanism_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          saslMechanism_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @return The bytes for saslMechanism.
       */
      public com.google.protobuf.ByteString
          getSaslMechanismBytes() {
        java.lang.Object ref = saslMechanism_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          saslMechanism_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @param value The saslMechanism to set.
       * @return This builder for chaining.
       */
      public Builder setSaslMechanism(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        saslMechanism_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @return This builder for chaining.
       */
      public Builder clearSaslMechanism() {
        
        saslMechanism_ = getDefaultInstance().getSaslMechanism();
        onChanged();
        return this;
      }
      /**
       * 
       * SASL mechanism to use for connection to the cluster.
       * 
       *
       * string sasl_mechanism = 4;
       * @param value The bytes for saslMechanism to set.
       * @return This builder for chaining.
       */
      public Builder setSaslMechanismBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        saslMechanism_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object securityProtocol_ = "";
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @return The securityProtocol.
       */
      public java.lang.String getSecurityProtocol() {
        java.lang.Object ref = securityProtocol_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          securityProtocol_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @return The bytes for securityProtocol.
       */
      public com.google.protobuf.ByteString
          getSecurityProtocolBytes() {
        java.lang.Object ref = securityProtocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          securityProtocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @param value The securityProtocol to set.
       * @return This builder for chaining.
       */
      public Builder setSecurityProtocol(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        securityProtocol_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @return This builder for chaining.
       */
      public Builder clearSecurityProtocol() {
        
        securityProtocol_ = getDefaultInstance().getSecurityProtocol();
        onChanged();
        return this;
      }
      /**
       * 
       * Security protocol to use for connection to the cluster.
       * 
       *
       * string security_protocol = 5;
       * @param value The bytes for securityProtocol to set.
       * @return This builder for chaining.
       */
      public Builder setSecurityProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        securityProtocol_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ExternalClusterConnection)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ExternalClusterConnection)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExternalClusterConnection parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ExternalClusterConnection(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalClusterConnection getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ConnectorConfigS3SinkOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The topics.
     */
    java.lang.String getTopics();
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The bytes for topics.
     */
    com.google.protobuf.ByteString
        getTopicsBytes();
    /**
     * 
     * The compression type used for files put on GCS.
     * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
     * Optional, the default is `none`.
     * 
     *
     * string file_compression_type = 2;
     * @return The fileCompressionType.
     */
    java.lang.String getFileCompressionType();
    /**
     * 
     * The compression type used for files put on GCS.
     * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
     * Optional, the default is `none`.
     * 
     *
     * string file_compression_type = 2;
     * @return The bytes for fileCompressionType.
     */
    com.google.protobuf.ByteString
        getFileCompressionTypeBytes();
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     * @return Whether the fileMaxRecords field is set.
     */
    boolean hasFileMaxRecords();
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     * @return The fileMaxRecords.
     */
    com.google.protobuf.Int64Value getFileMaxRecords();
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     */
    com.google.protobuf.Int64ValueOrBuilder getFileMaxRecordsOrBuilder();
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
     * @return Whether the s3Connection field is set.
     */
    boolean hasS3Connection();
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
     * @return The s3Connection.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection getS3Connection();
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionOrBuilder getS3ConnectionOrBuilder();
  }
  /**
   * 
   * An Apache Kafka® S3-Sink
   * connector resource.
   * 
   *
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink}
   */
  public static final class ConnectorConfigS3Sink extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink)
      ConnectorConfigS3SinkOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectorConfigS3Sink.newBuilder() to construct.
    private ConnectorConfigS3Sink(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ConnectorConfigS3Sink() {
      topics_ = "";
      fileCompressionType_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectorConfigS3Sink();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectorConfigS3Sink(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              topics_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              fileCompressionType_ = s;
              break;
            }
            case 26: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (fileMaxRecords_ != null) {
                subBuilder = fileMaxRecords_.toBuilder();
              }
              fileMaxRecords_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fileMaxRecords_);
                fileMaxRecords_ = subBuilder.buildPartial();
              }
              break;
            }
            case 34: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.Builder subBuilder = null;
              if (s3Connection_ != null) {
                subBuilder = s3Connection_.toBuilder();
              }
              s3Connection_ = input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(s3Connection_);
                s3Connection_ = subBuilder.buildPartial();
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.Builder.class);
    }
    public static final int TOPICS_FIELD_NUMBER = 1;
    private volatile java.lang.Object topics_;
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The topics.
     */
    @java.lang.Override
    public java.lang.String getTopics() {
      java.lang.Object ref = topics_;
      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();
        topics_ = s;
        return s;
      }
    }
    /**
     * 
     * List of Kafka topics, separated by ','.
     * 
     *
     * string topics = 1;
     * @return The bytes for topics.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTopicsBytes() {
      java.lang.Object ref = topics_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        topics_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int FILE_COMPRESSION_TYPE_FIELD_NUMBER = 2;
    private volatile java.lang.Object fileCompressionType_;
    /**
     * 
     * The compression type used for files put on GCS.
     * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
     * Optional, the default is `none`.
     * 
     *
     * string file_compression_type = 2;
     * @return The fileCompressionType.
     */
    @java.lang.Override
    public java.lang.String getFileCompressionType() {
      java.lang.Object ref = fileCompressionType_;
      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();
        fileCompressionType_ = s;
        return s;
      }
    }
    /**
     * 
     * The compression type used for files put on GCS.
     * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
     * Optional, the default is `none`.
     * 
     *
     * string file_compression_type = 2;
     * @return The bytes for fileCompressionType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFileCompressionTypeBytes() {
      java.lang.Object ref = fileCompressionType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fileCompressionType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int FILE_MAX_RECORDS_FIELD_NUMBER = 3;
    private com.google.protobuf.Int64Value fileMaxRecords_;
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     * @return Whether the fileMaxRecords field is set.
     */
    @java.lang.Override
    public boolean hasFileMaxRecords() {
      return fileMaxRecords_ != null;
    }
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     * @return The fileMaxRecords.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getFileMaxRecords() {
      return fileMaxRecords_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : fileMaxRecords_;
    }
    /**
     * 
     * Max records per file.
     * 
     *
     * .google.protobuf.Int64Value file_max_records = 3;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getFileMaxRecordsOrBuilder() {
      return getFileMaxRecords();
    }
    public static final int S3_CONNECTION_FIELD_NUMBER = 4;
    private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection s3Connection_;
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
     * @return Whether the s3Connection field is set.
     */
    @java.lang.Override
    public boolean hasS3Connection() {
      return s3Connection_ != null;
    }
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
     * @return The s3Connection.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection getS3Connection() {
      return s3Connection_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.getDefaultInstance() : s3Connection_;
    }
    /**
     * 
     * Credentials for connecting to S3 storage.
     * 
     *
     * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionOrBuilder getS3ConnectionOrBuilder() {
      return getS3Connection();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, topics_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fileCompressionType_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, fileCompressionType_);
      }
      if (fileMaxRecords_ != null) {
        output.writeMessage(3, getFileMaxRecords());
      }
      if (s3Connection_ != null) {
        output.writeMessage(4, getS3Connection());
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topics_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, topics_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fileCompressionType_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, fileCompressionType_);
      }
      if (fileMaxRecords_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getFileMaxRecords());
      }
      if (s3Connection_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getS3Connection());
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) obj;
      if (!getTopics()
          .equals(other.getTopics())) return false;
      if (!getFileCompressionType()
          .equals(other.getFileCompressionType())) return false;
      if (hasFileMaxRecords() != other.hasFileMaxRecords()) return false;
      if (hasFileMaxRecords()) {
        if (!getFileMaxRecords()
            .equals(other.getFileMaxRecords())) return false;
      }
      if (hasS3Connection() != other.hasS3Connection()) return false;
      if (hasS3Connection()) {
        if (!getS3Connection()
            .equals(other.getS3Connection())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TOPICS_FIELD_NUMBER;
      hash = (53 * hash) + getTopics().hashCode();
      hash = (37 * hash) + FILE_COMPRESSION_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getFileCompressionType().hashCode();
      if (hasFileMaxRecords()) {
        hash = (37 * hash) + FILE_MAX_RECORDS_FIELD_NUMBER;
        hash = (53 * hash) + getFileMaxRecords().hashCode();
      }
      if (hasS3Connection()) {
        hash = (37 * hash) + S3_CONNECTION_FIELD_NUMBER;
        hash = (53 * hash) + getS3Connection().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink 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;
    }
    /**
     * 
     * An Apache Kafka® S3-Sink
     * connector resource.
     * 
     *
     * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3SinkOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.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();
        topics_ = "";
        fileCompressionType_ = "";
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecords_ = null;
        } else {
          fileMaxRecords_ = null;
          fileMaxRecordsBuilder_ = null;
        }
        if (s3ConnectionBuilder_ == null) {
          s3Connection_ = null;
        } else {
          s3Connection_ = null;
          s3ConnectionBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink(this);
        result.topics_ = topics_;
        result.fileCompressionType_ = fileCompressionType_;
        if (fileMaxRecordsBuilder_ == null) {
          result.fileMaxRecords_ = fileMaxRecords_;
        } else {
          result.fileMaxRecords_ = fileMaxRecordsBuilder_.build();
        }
        if (s3ConnectionBuilder_ == null) {
          result.s3Connection_ = s3Connection_;
        } else {
          result.s3Connection_ = s3ConnectionBuilder_.build();
        }
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink.getDefaultInstance()) return this;
        if (!other.getTopics().isEmpty()) {
          topics_ = other.topics_;
          onChanged();
        }
        if (!other.getFileCompressionType().isEmpty()) {
          fileCompressionType_ = other.fileCompressionType_;
          onChanged();
        }
        if (other.hasFileMaxRecords()) {
          mergeFileMaxRecords(other.getFileMaxRecords());
        }
        if (other.hasS3Connection()) {
          mergeS3Connection(other.getS3Connection());
        }
        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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object topics_ = "";
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @return The topics.
       */
      public java.lang.String getTopics() {
        java.lang.Object ref = topics_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          topics_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @return The bytes for topics.
       */
      public com.google.protobuf.ByteString
          getTopicsBytes() {
        java.lang.Object ref = topics_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          topics_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @param value The topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopics(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        topics_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @return This builder for chaining.
       */
      public Builder clearTopics() {
        
        topics_ = getDefaultInstance().getTopics();
        onChanged();
        return this;
      }
      /**
       * 
       * List of Kafka topics, separated by ','.
       * 
       *
       * string topics = 1;
       * @param value The bytes for topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopicsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        topics_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object fileCompressionType_ = "";
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @return The fileCompressionType.
       */
      public java.lang.String getFileCompressionType() {
        java.lang.Object ref = fileCompressionType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fileCompressionType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @return The bytes for fileCompressionType.
       */
      public com.google.protobuf.ByteString
          getFileCompressionTypeBytes() {
        java.lang.Object ref = fileCompressionType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fileCompressionType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @param value The fileCompressionType to set.
       * @return This builder for chaining.
       */
      public Builder setFileCompressionType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        fileCompressionType_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @return This builder for chaining.
       */
      public Builder clearFileCompressionType() {
        
        fileCompressionType_ = getDefaultInstance().getFileCompressionType();
        onChanged();
        return this;
      }
      /**
       * 
       * The compression type used for files put on GCS.
       * The supported values are: `gzip`, `snappy`, `zstd`, `none`.
       * Optional, the default is `none`.
       * 
       *
       * string file_compression_type = 2;
       * @param value The bytes for fileCompressionType to set.
       * @return This builder for chaining.
       */
      public Builder setFileCompressionTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        fileCompressionType_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value fileMaxRecords_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> fileMaxRecordsBuilder_;
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       * @return Whether the fileMaxRecords field is set.
       */
      public boolean hasFileMaxRecords() {
        return fileMaxRecordsBuilder_ != null || fileMaxRecords_ != null;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       * @return The fileMaxRecords.
       */
      public com.google.protobuf.Int64Value getFileMaxRecords() {
        if (fileMaxRecordsBuilder_ == null) {
          return fileMaxRecords_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : fileMaxRecords_;
        } else {
          return fileMaxRecordsBuilder_.getMessage();
        }
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public Builder setFileMaxRecords(com.google.protobuf.Int64Value value) {
        if (fileMaxRecordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fileMaxRecords_ = value;
          onChanged();
        } else {
          fileMaxRecordsBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public Builder setFileMaxRecords(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecords_ = builderForValue.build();
          onChanged();
        } else {
          fileMaxRecordsBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public Builder mergeFileMaxRecords(com.google.protobuf.Int64Value value) {
        if (fileMaxRecordsBuilder_ == null) {
          if (fileMaxRecords_ != null) {
            fileMaxRecords_ =
              com.google.protobuf.Int64Value.newBuilder(fileMaxRecords_).mergeFrom(value).buildPartial();
          } else {
            fileMaxRecords_ = value;
          }
          onChanged();
        } else {
          fileMaxRecordsBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public Builder clearFileMaxRecords() {
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecords_ = null;
          onChanged();
        } else {
          fileMaxRecords_ = null;
          fileMaxRecordsBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public com.google.protobuf.Int64Value.Builder getFileMaxRecordsBuilder() {
        
        onChanged();
        return getFileMaxRecordsFieldBuilder().getBuilder();
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      public com.google.protobuf.Int64ValueOrBuilder getFileMaxRecordsOrBuilder() {
        if (fileMaxRecordsBuilder_ != null) {
          return fileMaxRecordsBuilder_.getMessageOrBuilder();
        } else {
          return fileMaxRecords_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : fileMaxRecords_;
        }
      }
      /**
       * 
       * Max records per file.
       * 
       *
       * .google.protobuf.Int64Value file_max_records = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getFileMaxRecordsFieldBuilder() {
        if (fileMaxRecordsBuilder_ == null) {
          fileMaxRecordsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getFileMaxRecords(),
                  getParentForChildren(),
                  isClean());
          fileMaxRecords_ = null;
        }
        return fileMaxRecordsBuilder_;
      }
      private yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection s3Connection_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionOrBuilder> s3ConnectionBuilder_;
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
       * @return Whether the s3Connection field is set.
       */
      public boolean hasS3Connection() {
        return s3ConnectionBuilder_ != null || s3Connection_ != null;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
       * @return The s3Connection.
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection getS3Connection() {
        if (s3ConnectionBuilder_ == null) {
          return s3Connection_ == null ? yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.getDefaultInstance() : s3Connection_;
        } else {
          return s3ConnectionBuilder_.getMessage();
        }
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
       */
      public Builder setS3Connection(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection value) {
        if (s3ConnectionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          s3Connection_ = value;
          onChanged();
        } else {
          s3ConnectionBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
       */
      public Builder setS3Connection(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.Builder builderForValue) {
        if (s3ConnectionBuilder_ == null) {
          s3Connection_ = builderForValue.build();
          onChanged();
        } else {
          s3ConnectionBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
       */
      public Builder mergeS3Connection(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection value) {
        if (s3ConnectionBuilder_ == null) {
          if (s3Connection_ != null) {
            s3Connection_ =
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.newBuilder(s3Connection_).mergeFrom(value).buildPartial();
          } else {
            s3Connection_ = value;
          }
          onChanged();
        } else {
          s3ConnectionBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
       */
      public Builder clearS3Connection() {
        if (s3ConnectionBuilder_ == null) {
          s3Connection_ = null;
          onChanged();
        } else {
          s3Connection_ = null;
          s3ConnectionBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.Builder getS3ConnectionBuilder() {
        
        onChanged();
        return getS3ConnectionFieldBuilder().getBuilder();
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionOrBuilder getS3ConnectionOrBuilder() {
        if (s3ConnectionBuilder_ != null) {
          return s3ConnectionBuilder_.getMessageOrBuilder();
        } else {
          return s3Connection_ == null ?
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.getDefaultInstance() : s3Connection_;
        }
      }
      /**
       * 
       * Credentials for connecting to S3 storage.
       * 
       *
       * .yandex.cloud.mdb.kafka.v1.S3Connection s3_connection = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionOrBuilder> 
          getS3ConnectionFieldBuilder() {
        if (s3ConnectionBuilder_ == null) {
          s3ConnectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionOrBuilder>(
                  getS3Connection(),
                  getParentForChildren(),
                  isClean());
          s3Connection_ = null;
        }
        return s3ConnectionBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ConnectorConfigS3Sink)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ConnectorConfigS3Sink parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ConnectorConfigS3Sink(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ConnectorConfigS3Sink getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface S3ConnectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.S3Connection)
      com.google.protobuf.MessageOrBuilder {
    /**
     * string bucket_name = 1;
     * @return The bucketName.
     */
    java.lang.String getBucketName();
    /**
     * string bucket_name = 1;
     * @return The bytes for bucketName.
     */
    com.google.protobuf.ByteString
        getBucketNameBytes();
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
     * @return Whether the externalS3 field is set.
     */
    boolean hasExternalS3();
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
     * @return The externalS3.
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage getExternalS3();
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
     */
    yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageOrBuilder getExternalS3OrBuilder();
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.StorageCase getStorageCase();
  }
  /**
   * 
   * Resource for S3Connection -
   * settings of connection to AWS-compatible S3 storage, that
   * are source or target of Kafka S3-connectors.
   * YC Object Storage is AWS-compatible.
   * 
   *
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.S3Connection}
   */
  public static final class S3Connection extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.S3Connection)
      S3ConnectionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use S3Connection.newBuilder() to construct.
    private S3Connection(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private S3Connection() {
      bucketName_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new S3Connection();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private S3Connection(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              bucketName_ = s;
              break;
            }
            case 18: {
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.Builder subBuilder = null;
              if (storageCase_ == 2) {
                subBuilder = ((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_).toBuilder();
              }
              storage_ =
                  input.readMessage(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_);
                storage_ = subBuilder.buildPartial();
              }
              storageCase_ = 2;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.Builder.class);
    }
    private int storageCase_ = 0;
    private java.lang.Object storage_;
    public enum StorageCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      EXTERNAL_S3(2),
      STORAGE_NOT_SET(0);
      private final int value;
      private StorageCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static StorageCase valueOf(int value) {
        return forNumber(value);
      }
      public static StorageCase forNumber(int value) {
        switch (value) {
          case 2: return EXTERNAL_S3;
          case 0: return STORAGE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public StorageCase
    getStorageCase() {
      return StorageCase.forNumber(
          storageCase_);
    }
    public static final int BUCKET_NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object bucketName_;
    /**
     * string bucket_name = 1;
     * @return The bucketName.
     */
    @java.lang.Override
    public java.lang.String getBucketName() {
      java.lang.Object ref = bucketName_;
      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();
        bucketName_ = s;
        return s;
      }
    }
    /**
     * string bucket_name = 1;
     * @return The bytes for bucketName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBucketNameBytes() {
      java.lang.Object ref = bucketName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bucketName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int EXTERNAL_S3_FIELD_NUMBER = 2;
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
     * @return Whether the externalS3 field is set.
     */
    @java.lang.Override
    public boolean hasExternalS3() {
      return storageCase_ == 2;
    }
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
     * @return The externalS3.
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage getExternalS3() {
      if (storageCase_ == 2) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.getDefaultInstance();
    }
    /**
     * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
     */
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageOrBuilder getExternalS3OrBuilder() {
      if (storageCase_ == 2) {
         return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_;
      }
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bucketName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, bucketName_);
      }
      if (storageCase_ == 2) {
        output.writeMessage(2, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bucketName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, bucketName_);
      }
      if (storageCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection) obj;
      if (!getBucketName()
          .equals(other.getBucketName())) return false;
      if (!getStorageCase().equals(other.getStorageCase())) return false;
      switch (storageCase_) {
        case 2:
          if (!getExternalS3()
              .equals(other.getExternalS3())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + BUCKET_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getBucketName().hashCode();
      switch (storageCase_) {
        case 2:
          hash = (37 * hash) + EXTERNAL_S3_FIELD_NUMBER;
          hash = (53 * hash) + getExternalS3().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection 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;
    }
    /**
     * 
     * Resource for S3Connection -
     * settings of connection to AWS-compatible S3 storage, that
     * are source or target of Kafka S3-connectors.
     * YC Object Storage is AWS-compatible.
     * 
     *
     * Protobuf type {@code yandex.cloud.mdb.kafka.v1.S3Connection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.S3Connection)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3ConnectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.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();
        bucketName_ = "";
        storageCase_ = 0;
        storage_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection(this);
        result.bucketName_ = bucketName_;
        if (storageCase_ == 2) {
          if (externalS3Builder_ == null) {
            result.storage_ = storage_;
          } else {
            result.storage_ = externalS3Builder_.build();
          }
        }
        result.storageCase_ = storageCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection.getDefaultInstance()) return this;
        if (!other.getBucketName().isEmpty()) {
          bucketName_ = other.bucketName_;
          onChanged();
        }
        switch (other.getStorageCase()) {
          case EXTERNAL_S3: {
            mergeExternalS3(other.getExternalS3());
            break;
          }
          case STORAGE_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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int storageCase_ = 0;
      private java.lang.Object storage_;
      public StorageCase
          getStorageCase() {
        return StorageCase.forNumber(
            storageCase_);
      }
      public Builder clearStorage() {
        storageCase_ = 0;
        storage_ = null;
        onChanged();
        return this;
      }
      private java.lang.Object bucketName_ = "";
      /**
       * string bucket_name = 1;
       * @return The bucketName.
       */
      public java.lang.String getBucketName() {
        java.lang.Object ref = bucketName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          bucketName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string bucket_name = 1;
       * @return The bytes for bucketName.
       */
      public com.google.protobuf.ByteString
          getBucketNameBytes() {
        java.lang.Object ref = bucketName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bucketName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string bucket_name = 1;
       * @param value The bucketName to set.
       * @return This builder for chaining.
       */
      public Builder setBucketName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        bucketName_ = value;
        onChanged();
        return this;
      }
      /**
       * string bucket_name = 1;
       * @return This builder for chaining.
       */
      public Builder clearBucketName() {
        
        bucketName_ = getDefaultInstance().getBucketName();
        onChanged();
        return this;
      }
      /**
       * string bucket_name = 1;
       * @param value The bytes for bucketName to set.
       * @return This builder for chaining.
       */
      public Builder setBucketNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        bucketName_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageOrBuilder> externalS3Builder_;
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
       * @return Whether the externalS3 field is set.
       */
      @java.lang.Override
      public boolean hasExternalS3() {
        return storageCase_ == 2;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
       * @return The externalS3.
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage getExternalS3() {
        if (externalS3Builder_ == null) {
          if (storageCase_ == 2) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.getDefaultInstance();
        } else {
          if (storageCase_ == 2) {
            return externalS3Builder_.getMessage();
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.getDefaultInstance();
        }
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
       */
      public Builder setExternalS3(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage value) {
        if (externalS3Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          storage_ = value;
          onChanged();
        } else {
          externalS3Builder_.setMessage(value);
        }
        storageCase_ = 2;
        return this;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
       */
      public Builder setExternalS3(
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.Builder builderForValue) {
        if (externalS3Builder_ == null) {
          storage_ = builderForValue.build();
          onChanged();
        } else {
          externalS3Builder_.setMessage(builderForValue.build());
        }
        storageCase_ = 2;
        return this;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
       */
      public Builder mergeExternalS3(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage value) {
        if (externalS3Builder_ == null) {
          if (storageCase_ == 2 &&
              storage_ != yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.getDefaultInstance()) {
            storage_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.newBuilder((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_)
                .mergeFrom(value).buildPartial();
          } else {
            storage_ = value;
          }
          onChanged();
        } else {
          if (storageCase_ == 2) {
            externalS3Builder_.mergeFrom(value);
          }
          externalS3Builder_.setMessage(value);
        }
        storageCase_ = 2;
        return this;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
       */
      public Builder clearExternalS3() {
        if (externalS3Builder_ == null) {
          if (storageCase_ == 2) {
            storageCase_ = 0;
            storage_ = null;
            onChanged();
          }
        } else {
          if (storageCase_ == 2) {
            storageCase_ = 0;
            storage_ = null;
          }
          externalS3Builder_.clear();
        }
        return this;
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
       */
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.Builder getExternalS3Builder() {
        return getExternalS3FieldBuilder().getBuilder();
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
       */
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageOrBuilder getExternalS3OrBuilder() {
        if ((storageCase_ == 2) && (externalS3Builder_ != null)) {
          return externalS3Builder_.getMessageOrBuilder();
        } else {
          if (storageCase_ == 2) {
            return (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_;
          }
          return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.getDefaultInstance();
        }
      }
      /**
       * .yandex.cloud.mdb.kafka.v1.ExternalS3Storage external_s3 = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageOrBuilder> 
          getExternalS3FieldBuilder() {
        if (externalS3Builder_ == null) {
          if (!(storageCase_ == 2)) {
            storage_ = yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.getDefaultInstance();
          }
          externalS3Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.Builder, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageOrBuilder>(
                  (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) storage_,
                  getParentForChildren(),
                  isClean());
          storage_ = null;
        }
        storageCase_ = 2;
        onChanged();;
        return externalS3Builder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.S3Connection)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.S3Connection)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public S3Connection parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new S3Connection(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.S3Connection getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ExternalS3StorageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.mdb.kafka.v1.ExternalS3Storage)
      com.google.protobuf.MessageOrBuilder {
    /**
     * string access_key_id = 1;
     * @return The accessKeyId.
     */
    java.lang.String getAccessKeyId();
    /**
     * string access_key_id = 1;
     * @return The bytes for accessKeyId.
     */
    com.google.protobuf.ByteString
        getAccessKeyIdBytes();
    /**
     * string endpoint = 2;
     * @return The endpoint.
     */
    java.lang.String getEndpoint();
    /**
     * string endpoint = 2;
     * @return The bytes for endpoint.
     */
    com.google.protobuf.ByteString
        getEndpointBytes();
    /**
     * 
     * Default is 'us-east-1'
     * 
     *
     * string region = 3;
     * @return The region.
     */
    java.lang.String getRegion();
    /**
     * 
     * Default is 'us-east-1'
     * 
     *
     * string region = 3;
     * @return The bytes for region.
     */
    com.google.protobuf.ByteString
        getRegionBytes();
  }
  /**
   * Protobuf type {@code yandex.cloud.mdb.kafka.v1.ExternalS3Storage}
   */
  public static final class ExternalS3Storage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.mdb.kafka.v1.ExternalS3Storage)
      ExternalS3StorageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExternalS3Storage.newBuilder() to construct.
    private ExternalS3Storage(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ExternalS3Storage() {
      accessKeyId_ = "";
      endpoint_ = "";
      region_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExternalS3Storage();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ExternalS3Storage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              accessKeyId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              endpoint_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              region_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.Builder.class);
    }
    public static final int ACCESS_KEY_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object accessKeyId_;
    /**
     * string access_key_id = 1;
     * @return The accessKeyId.
     */
    @java.lang.Override
    public java.lang.String getAccessKeyId() {
      java.lang.Object ref = accessKeyId_;
      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();
        accessKeyId_ = s;
        return s;
      }
    }
    /**
     * string access_key_id = 1;
     * @return The bytes for accessKeyId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAccessKeyIdBytes() {
      java.lang.Object ref = accessKeyId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        accessKeyId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int ENDPOINT_FIELD_NUMBER = 2;
    private volatile java.lang.Object endpoint_;
    /**
     * string endpoint = 2;
     * @return The endpoint.
     */
    @java.lang.Override
    public java.lang.String getEndpoint() {
      java.lang.Object ref = endpoint_;
      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();
        endpoint_ = s;
        return s;
      }
    }
    /**
     * string endpoint = 2;
     * @return The bytes for endpoint.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEndpointBytes() {
      java.lang.Object ref = endpoint_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        endpoint_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int REGION_FIELD_NUMBER = 3;
    private volatile java.lang.Object region_;
    /**
     * 
     * Default is 'us-east-1'
     * 
     *
     * string region = 3;
     * @return The region.
     */
    @java.lang.Override
    public java.lang.String getRegion() {
      java.lang.Object ref = region_;
      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();
        region_ = s;
        return s;
      }
    }
    /**
     * 
     * Default is 'us-east-1'
     * 
     *
     * string region = 3;
     * @return The bytes for region.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRegionBytes() {
      java.lang.Object ref = region_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        region_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accessKeyId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, accessKeyId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpoint_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, endpoint_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(region_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, region_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accessKeyId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, accessKeyId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpoint_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, endpoint_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(region_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, region_);
      }
      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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage)) {
        return super.equals(obj);
      }
      yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage other = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) obj;
      if (!getAccessKeyId()
          .equals(other.getAccessKeyId())) return false;
      if (!getEndpoint()
          .equals(other.getEndpoint())) return false;
      if (!getRegion()
          .equals(other.getRegion())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACCESS_KEY_ID_FIELD_NUMBER;
      hash = (53 * hash) + getAccessKeyId().hashCode();
      hash = (37 * hash) + ENDPOINT_FIELD_NUMBER;
      hash = (53 * hash) + getEndpoint().hashCode();
      hash = (37 * hash) + REGION_FIELD_NUMBER;
      hash = (53 * hash) + getRegion().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage 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 yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage 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(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage 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 yandex.cloud.mdb.kafka.v1.ExternalS3Storage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.mdb.kafka.v1.ExternalS3Storage)
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3StorageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.class, yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.Builder.class);
      }
      // Construct using yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.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();
        accessKeyId_ = "";
        endpoint_ = "";
        region_ = "";
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage getDefaultInstanceForType() {
        return yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage build() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage buildPartial() {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage result = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage(this);
        result.accessKeyId_ = accessKeyId_;
        result.endpoint_ = endpoint_;
        result.region_ = region_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) {
          return mergeFrom((yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage other) {
        if (other == yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage.getDefaultInstance()) return this;
        if (!other.getAccessKeyId().isEmpty()) {
          accessKeyId_ = other.accessKeyId_;
          onChanged();
        }
        if (!other.getEndpoint().isEmpty()) {
          endpoint_ = other.endpoint_;
          onChanged();
        }
        if (!other.getRegion().isEmpty()) {
          region_ = other.region_;
          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 {
        yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object accessKeyId_ = "";
      /**
       * string access_key_id = 1;
       * @return The accessKeyId.
       */
      public java.lang.String getAccessKeyId() {
        java.lang.Object ref = accessKeyId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          accessKeyId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string access_key_id = 1;
       * @return The bytes for accessKeyId.
       */
      public com.google.protobuf.ByteString
          getAccessKeyIdBytes() {
        java.lang.Object ref = accessKeyId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          accessKeyId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string access_key_id = 1;
       * @param value The accessKeyId to set.
       * @return This builder for chaining.
       */
      public Builder setAccessKeyId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        accessKeyId_ = value;
        onChanged();
        return this;
      }
      /**
       * string access_key_id = 1;
       * @return This builder for chaining.
       */
      public Builder clearAccessKeyId() {
        
        accessKeyId_ = getDefaultInstance().getAccessKeyId();
        onChanged();
        return this;
      }
      /**
       * string access_key_id = 1;
       * @param value The bytes for accessKeyId to set.
       * @return This builder for chaining.
       */
      public Builder setAccessKeyIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        accessKeyId_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object endpoint_ = "";
      /**
       * string endpoint = 2;
       * @return The endpoint.
       */
      public java.lang.String getEndpoint() {
        java.lang.Object ref = endpoint_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          endpoint_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string endpoint = 2;
       * @return The bytes for endpoint.
       */
      public com.google.protobuf.ByteString
          getEndpointBytes() {
        java.lang.Object ref = endpoint_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          endpoint_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string endpoint = 2;
       * @param value The endpoint to set.
       * @return This builder for chaining.
       */
      public Builder setEndpoint(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        endpoint_ = value;
        onChanged();
        return this;
      }
      /**
       * string endpoint = 2;
       * @return This builder for chaining.
       */
      public Builder clearEndpoint() {
        
        endpoint_ = getDefaultInstance().getEndpoint();
        onChanged();
        return this;
      }
      /**
       * string endpoint = 2;
       * @param value The bytes for endpoint to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        endpoint_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object region_ = "";
      /**
       * 
       * Default is 'us-east-1'
       * 
       *
       * string region = 3;
       * @return The region.
       */
      public java.lang.String getRegion() {
        java.lang.Object ref = region_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          region_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Default is 'us-east-1'
       * 
       *
       * string region = 3;
       * @return The bytes for region.
       */
      public com.google.protobuf.ByteString
          getRegionBytes() {
        java.lang.Object ref = region_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          region_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Default is 'us-east-1'
       * 
       *
       * string region = 3;
       * @param value The region to set.
       * @return This builder for chaining.
       */
      public Builder setRegion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        region_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Default is 'us-east-1'
       * 
       *
       * string region = 3;
       * @return This builder for chaining.
       */
      public Builder clearRegion() {
        
        region_ = getDefaultInstance().getRegion();
        onChanged();
        return this;
      }
      /**
       * 
       * Default is 'us-east-1'
       * 
       *
       * string region = 3;
       * @param value The bytes for region to set.
       * @return This builder for chaining.
       */
      public Builder setRegionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        region_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.mdb.kafka.v1.ExternalS3Storage)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.mdb.kafka.v1.ExternalS3Storage)
    private static final yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage();
    }
    public static yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExternalS3Storage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ExternalS3Storage(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.mdb.kafka.v1.ConnectorOuterClass.ExternalS3Storage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_PropertiesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_PropertiesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_PropertiesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_PropertiesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_Connector_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_Connector_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_Connector_PropertiesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_Connector_PropertiesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_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)yandex/cloud/mdb/kafka/v1/connector.pr" +
      "oto\022\031yandex.cloud.mdb.kafka.v1\032\036google/p" +
      "rotobuf/wrappers.proto\"\237\003\n\rConnectorSpec" +
      "\022\014\n\004name\030\001 \001(\t\022.\n\ttasks_max\030\002 \001(\0132\033.goog" +
      "le.protobuf.Int64Value\022L\n\nproperties\030\003 \003" +
      "(\01328.yandex.cloud.mdb.kafka.v1.Connector" +
      "Spec.PropertiesEntry\022a\n\034connector_config" +
      "_mirrormaker\030\n \001(\01329.yandex.cloud.mdb.ka" +
      "fka.v1.ConnectorConfigMirrorMakerSpecH\000\022" +
      "X\n\030connector_config_s3_sink\030\013 \001(\01324.yand" +
      "ex.cloud.mdb.kafka.v1.ConnectorConfigS3S" +
      "inkSpecH\000\0321\n\017PropertiesEntry\022\013\n\003key\030\001 \001(" +
      "\t\022\r\n\005value\030\002 \001(\t:\0028\001B\022\n\020connector_config" +
      "\"\243\003\n\023UpdateConnectorSpec\022.\n\ttasks_max\030\001 " +
      "\001(\0132\033.google.protobuf.Int64Value\022R\n\nprop" +
      "erties\030\002 \003(\0132>.yandex.cloud.mdb.kafka.v1" +
      ".UpdateConnectorSpec.PropertiesEntry\022a\n\034" +
      "connector_config_mirrormaker\030\n \001(\01329.yan" +
      "dex.cloud.mdb.kafka.v1.ConnectorConfigMi" +
      "rrorMakerSpecH\000\022^\n\030connector_config_s3_s" +
      "ink\030\013 \001(\0132:.yandex.cloud.mdb.kafka.v1.Up" +
      "dateConnectorConfigS3SinkSpecH\000\0321\n\017Prope" +
      "rtiesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\002" +
      "8\001B\022\n\020connector_config\"\375\001\n\036ConnectorConf" +
      "igMirrorMakerSpec\022H\n\016source_cluster\030\001 \001(" +
      "\01320.yandex.cloud.mdb.kafka.v1.ClusterCon" +
      "nectionSpec\022H\n\016target_cluster\030\002 \001(\01320.ya" +
      "ndex.cloud.mdb.kafka.v1.ClusterConnectio" +
      "nSpec\022\016\n\006topics\030\003 \001(\t\0227\n\022replication_fac" +
      "tor\030\004 \001(\0132\033.google.protobuf.Int64Value\"\326" +
      "\001\n\025ClusterConnectionSpec\022\r\n\005alias\030\001 \001(\t\022" +
      "B\n\014this_cluster\030\002 \001(\0132*.yandex.cloud.mdb" +
      ".kafka.v1.ThisClusterSpecH\000\022T\n\020external_" +
      "cluster\030\003 \001(\01328.yandex.cloud.mdb.kafka.v" +
      "1.ExternalClusterConnectionSpecH\000B\024\n\022clu" +
      "ster_connection\"\021\n\017ThisClusterSpec\"\300\001\n\035E" +
      "xternalClusterConnectionSpec\022\031\n\021bootstra" +
      "p_servers\030\001 \001(\t\022\025\n\rsasl_username\030\002 \001(\t\022\025" +
      "\n\rsasl_password\030\003 \001(\t\022\026\n\016sasl_mechanism\030" +
      "\004 \001(\t\022\031\n\021security_protocol\030\005 \001(\t\022#\n\033ssl_" +
      "truststore_certificates\030\006 \001(\t\"\305\001\n\031Connec" +
      "torConfigS3SinkSpec\022\016\n\006topics\030\001 \001(\t\022\035\n\025f" +
      "ile_compression_type\030\002 \001(\t\0225\n\020file_max_r" +
      "ecords\030\003 \001(\0132\033.google.protobuf.Int64Valu" +
      "e\022B\n\rs3_connection\030\004 \001(\0132+.yandex.cloud." +
      "mdb.kafka.v1.S3ConnectionSpec\"\254\001\n\037Update" +
      "ConnectorConfigS3SinkSpec\022\016\n\006topics\030\001 \001(" +
      "\t\0225\n\020file_max_records\030\002 \001(\0132\033.google.pro" +
      "tobuf.Int64Value\022B\n\rs3_connection\030\003 \001(\0132" +
      "+.yandex.cloud.mdb.kafka.v1.S3Connection" +
      "Spec\"{\n\020S3ConnectionSpec\022\023\n\013bucket_name\030" +
      "\001 \001(\t\022G\n\013external_s3\030\002 \001(\01320.yandex.clou" +
      "d.mdb.kafka.v1.ExternalS3StorageSpecH\000B\t" +
      "\n\007storage\"k\n\025ExternalS3StorageSpec\022\025\n\rac" +
      "cess_key_id\030\001 \001(\t\022\031\n\021secret_access_key\030\002" +
      " \001(\t\022\020\n\010endpoint\030\003 \001(\t\022\016\n\006region\030\004 \001(\t\"\222" +
      "\005\n\tConnector\022\014\n\004name\030\001 \001(\t\022.\n\ttasks_max\030" +
      "\002 \001(\0132\033.google.protobuf.Int64Value\022H\n\npr" +
      "operties\030\003 \003(\01324.yandex.cloud.mdb.kafka." +
      "v1.Connector.PropertiesEntry\022;\n\006health\030\004" +
      " \001(\0162+.yandex.cloud.mdb.kafka.v1.Connect" +
      "or.Health\022;\n\006status\030\005 \001(\0162+.yandex.cloud" +
      ".mdb.kafka.v1.Connector.Status\022\022\n\ncluste" +
      "r_id\030\006 \001(\t\022]\n\034connector_config_mirrormak" +
      "er\030\n \001(\01325.yandex.cloud.mdb.kafka.v1.Con" +
      "nectorConfigMirrorMakerH\000\022T\n\030connector_c" +
      "onfig_s3_sink\030\013 \001(\01320.yandex.cloud.mdb.k" +
      "afka.v1.ConnectorConfigS3SinkH\000\0321\n\017Prope" +
      "rtiesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\002" +
      "8\001\"1\n\006Health\022\022\n\016HEALTH_UNKNOWN\020\000\022\t\n\005ALIV" +
      "E\020\001\022\010\n\004DEAD\020\002\"@\n\006Status\022\022\n\016STATUS_UNKNOW" +
      "N\020\000\022\013\n\007RUNNING\020\001\022\t\n\005ERROR\020\002\022\n\n\006PAUSED\020\003B" +
      "\022\n\020connector_config\"\361\001\n\032ConnectorConfigM" +
      "irrorMaker\022D\n\016source_cluster\030\001 \001(\0132,.yan" +
      "dex.cloud.mdb.kafka.v1.ClusterConnection" +
      "\022D\n\016target_cluster\030\002 \001(\0132,.yandex.cloud." +
      "mdb.kafka.v1.ClusterConnection\022\016\n\006topics" +
      "\030\003 \001(\t\0227\n\022replication_factor\030\004 \001(\0132\033.goo" +
      "gle.protobuf.Int64Value\"\312\001\n\021ClusterConne" +
      "ction\022\r\n\005alias\030\001 \001(\t\022>\n\014this_cluster\030\002 \001" +
      "(\0132&.yandex.cloud.mdb.kafka.v1.ThisClust" +
      "erH\000\022P\n\020external_cluster\030\003 \001(\01324.yandex." +
      "cloud.mdb.kafka.v1.ExternalClusterConnec" +
      "tionH\000B\024\n\022cluster_connection\"\r\n\013ThisClus" +
      "ter\"\200\001\n\031ExternalClusterConnection\022\031\n\021boo" +
      "tstrap_servers\030\001 \001(\t\022\025\n\rsasl_username\030\002 " +
      "\001(\t\022\026\n\016sasl_mechanism\030\004 \001(\t\022\031\n\021security_" +
      "protocol\030\005 \001(\t\"\275\001\n\025ConnectorConfigS3Sink" +
      "\022\016\n\006topics\030\001 \001(\t\022\035\n\025file_compression_typ" +
      "e\030\002 \001(\t\0225\n\020file_max_records\030\003 \001(\0132\033.goog" +
      "le.protobuf.Int64Value\022>\n\rs3_connection\030" +
      "\004 \001(\0132\'.yandex.cloud.mdb.kafka.v1.S3Conn" +
      "ection\"s\n\014S3Connection\022\023\n\013bucket_name\030\001 " +
      "\001(\t\022C\n\013external_s3\030\002 \001(\0132,.yandex.cloud." +
      "mdb.kafka.v1.ExternalS3StorageH\000B\t\n\007stor" +
      "age\"L\n\021ExternalS3Storage\022\025\n\raccess_key_i" +
      "d\030\001 \001(\t\022\020\n\010endpoint\030\002 \001(\t\022\016\n\006region\030\003 \001(" +
      "\tBd\n\035yandex.cloud.api.mdb.kafka.v1ZCgith" +
      "ub.com/yandex-cloud/go-genproto/yandex/c" +
      "loud/mdb/kafka/v1;kafkab\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.WrappersProto.getDescriptor(),
        });
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_descriptor,
        new java.lang.String[] { "Name", "TasksMax", "Properties", "ConnectorConfigMirrormaker", "ConnectorConfigS3Sink", "ConnectorConfig", });
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_PropertiesEntry_descriptor =
      internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_descriptor.getNestedTypes().get(0);
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_PropertiesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ConnectorSpec_PropertiesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_descriptor,
        new java.lang.String[] { "TasksMax", "Properties", "ConnectorConfigMirrormaker", "ConnectorConfigS3Sink", "ConnectorConfig", });
    internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_PropertiesEntry_descriptor =
      internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_descriptor.getNestedTypes().get(0);
    internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_PropertiesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorSpec_PropertiesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMakerSpec_descriptor,
        new java.lang.String[] { "SourceCluster", "TargetCluster", "Topics", "ReplicationFactor", });
    internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnectionSpec_descriptor,
        new java.lang.String[] { "Alias", "ThisCluster", "ExternalCluster", "ClusterConnection", });
    internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ThisClusterSpec_descriptor,
        new java.lang.String[] { });
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnectionSpec_descriptor,
        new java.lang.String[] { "BootstrapServers", "SaslUsername", "SaslPassword", "SaslMechanism", "SecurityProtocol", "SslTruststoreCertificates", });
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3SinkSpec_descriptor,
        new java.lang.String[] { "Topics", "FileCompressionType", "FileMaxRecords", "S3Connection", });
    internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_UpdateConnectorConfigS3SinkSpec_descriptor,
        new java.lang.String[] { "Topics", "FileMaxRecords", "S3Connection", });
    internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_S3ConnectionSpec_descriptor,
        new java.lang.String[] { "BucketName", "ExternalS3", "Storage", });
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3StorageSpec_descriptor,
        new java.lang.String[] { "AccessKeyId", "SecretAccessKey", "Endpoint", "Region", });
    internal_static_yandex_cloud_mdb_kafka_v1_Connector_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_yandex_cloud_mdb_kafka_v1_Connector_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_Connector_descriptor,
        new java.lang.String[] { "Name", "TasksMax", "Properties", "Health", "Status", "ClusterId", "ConnectorConfigMirrormaker", "ConnectorConfigS3Sink", "ConnectorConfig", });
    internal_static_yandex_cloud_mdb_kafka_v1_Connector_PropertiesEntry_descriptor =
      internal_static_yandex_cloud_mdb_kafka_v1_Connector_descriptor.getNestedTypes().get(0);
    internal_static_yandex_cloud_mdb_kafka_v1_Connector_PropertiesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_Connector_PropertiesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigMirrorMaker_descriptor,
        new java.lang.String[] { "SourceCluster", "TargetCluster", "Topics", "ReplicationFactor", });
    internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ClusterConnection_descriptor,
        new java.lang.String[] { "Alias", "ThisCluster", "ExternalCluster", "ClusterConnection", });
    internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ThisCluster_descriptor,
        new java.lang.String[] { });
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ExternalClusterConnection_descriptor,
        new java.lang.String[] { "BootstrapServers", "SaslUsername", "SaslMechanism", "SecurityProtocol", });
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ConnectorConfigS3Sink_descriptor,
        new java.lang.String[] { "Topics", "FileCompressionType", "FileMaxRecords", "S3Connection", });
    internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_S3Connection_descriptor,
        new java.lang.String[] { "BucketName", "ExternalS3", "Storage", });
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_mdb_kafka_v1_ExternalS3Storage_descriptor,
        new java.lang.String[] { "AccessKeyId", "Endpoint", "Region", });
    com.google.protobuf.WrappersProto.getDescriptor();
  }
  // @@protoc_insertion_point(outer_class_scope)
}
                                                                                                                                                           © 2015 - 2025 Weber Informatics LLC | Privacy Policy