// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: keyapis/iot_connect/v1/keyapis_iot_connect_callback_v1.proto

package ru.keyapis.iot_connect.v1;

public final class KeyapisIotConnectV1Proto {
  private KeyapisIotConnectV1Proto() {}
  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 GetCallbackUserRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.GetCallbackUserRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Запрос метода получения пользователя для соединения аккаунтов
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.GetCallbackUserRequest}
   */
  public static final class GetCallbackUserRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.GetCallbackUserRequest)
      GetCallbackUserRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetCallbackUserRequest.newBuilder() to construct.
    private GetCallbackUserRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetCallbackUserRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest.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 {
      getUnknownFields().writeTo(output);
    }

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest) obj;

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

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

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос метода получения пользователя для соединения аккаунтов
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.GetCallbackUserRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.GetCallbackUserRequest)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        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:keyapis.iot_connect.v1.GetCallbackUserRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.GetCallbackUserRequest)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetCallbackUserRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetCallbackUserRequest>() {
      @java.lang.Override
      public GetCallbackUserRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetCallbackUserResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.GetCallbackUserResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 data = 1 [json_name = "user_id"];</code>
     * @return The data.
     */
    int getData();
  }
  /**
   * <pre>
   * Ответ на запрос метода получения пользователя для соединения аккаунтов
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.GetCallbackUserResponse}
   */
  public static final class GetCallbackUserResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.GetCallbackUserResponse)
      GetCallbackUserResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetCallbackUserResponse.newBuilder() to construct.
    private GetCallbackUserResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetCallbackUserResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private int data_ = 0;
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 data = 1 [json_name = "user_id"];</code>
     * @return The data.
     */
    @java.lang.Override
    public int getData() {
      return data_;
    }

    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 (data_ != 0) {
        output.writeInt32(1, data_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (data_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, data_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse) obj;

      if (getData()
          != other.getData()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос метода получения пользователя для соединения аккаунтов
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.GetCallbackUserResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.GetCallbackUserResponse)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        data_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.data_ = data_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse.getDefaultInstance()) return this;
        if (other.getData() != 0) {
          setData(other.getData());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                data_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int data_ ;
      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 data = 1 [json_name = "user_id"];</code>
       * @return The data.
       */
      @java.lang.Override
      public int getData() {
        return data_;
      }
      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 data = 1 [json_name = "user_id"];</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(int value) {

        data_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 data = 1 [json_name = "user_id"];</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000001);
        data_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.iot_connect.v1.GetCallbackUserResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.GetCallbackUserResponse)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetCallbackUserResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetCallbackUserResponse>() {
      @java.lang.Override
      public GetCallbackUserResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackUserResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.Model)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор модели
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * Идентификатор модели
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * Производитель
     * </pre>
     *
     * <code>string manufacturer = 2;</code>
     * @return The manufacturer.
     */
    java.lang.String getManufacturer();
    /**
     * <pre>
     * Производитель
     * </pre>
     *
     * <code>string manufacturer = 2;</code>
     * @return The bytes for manufacturer.
     */
    com.google.protobuf.ByteString
        getManufacturerBytes();

    /**
     * <pre>
     * Название модели
     * </pre>
     *
     * <code>string model = 3;</code>
     * @return The model.
     */
    java.lang.String getModel();
    /**
     * <pre>
     * Название модели
     * </pre>
     *
     * <code>string model = 3;</code>
     * @return The bytes for model.
     */
    com.google.protobuf.ByteString
        getModelBytes();

    /**
     * <pre>
     * Версия оборудования
     * </pre>
     *
     * <code>string hw_version = 4;</code>
     * @return The hwVersion.
     */
    java.lang.String getHwVersion();
    /**
     * <pre>
     * Версия оборудования
     * </pre>
     *
     * <code>string hw_version = 4;</code>
     * @return The bytes for hwVersion.
     */
    com.google.protobuf.ByteString
        getHwVersionBytes();

    /**
     * <pre>
     * Версия прошивки
     * </pre>
     *
     * <code>string sw_version = 5;</code>
     * @return The swVersion.
     */
    java.lang.String getSwVersion();
    /**
     * <pre>
     * Версия прошивки
     * </pre>
     *
     * <code>string sw_version = 5;</code>
     * @return The bytes for swVersion.
     */
    com.google.protobuf.ByteString
        getSwVersionBytes();

    /**
     * <pre>
     * Описание
     * </pre>
     *
     * <code>string description = 6;</code>
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * <pre>
     * Описание
     * </pre>
     *
     * <code>string description = 6;</code>
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * <pre>
     * Категория устройства
     * </pre>
     *
     * <code>string category = 7;</code>
     * @return The category.
     */
    java.lang.String getCategory();
    /**
     * <pre>
     * Категория устройства
     * </pre>
     *
     * <code>string category = 7;</code>
     * @return The bytes for category.
     */
    com.google.protobuf.ByteString
        getCategoryBytes();

    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @return A list containing the featureTypes.
     */
    java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType> getFeatureTypesList();
    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @return The count of featureTypes.
     */
    int getFeatureTypesCount();
    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @param index The index of the element to return.
     * @return The featureTypes at the given index.
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType getFeatureTypes(int index);
    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @return A list containing the enum numeric values on the wire for featureTypes.
     */
    java.util.List<java.lang.Integer>
    getFeatureTypesValueList();
    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of featureTypes at the given index.
     */
    int getFeatureTypesValue(int index);
  }
  /**
   * <pre>
   * Объект Модель устройства
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.Model}
   */
  public static final class Model extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.Model)
      ModelOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Model.newBuilder() to construct.
    private Model(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Model() {
      id_ = "";
      manufacturer_ = "";
      model_ = "";
      hwVersion_ = "";
      swVersion_ = "";
      description_ = "";
      category_ = "";
      featureTypes_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Model_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Model_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.Builder.class);
    }

    /**
     * <pre>
     * Список функций устройства
     * </pre>
     *
     * Protobuf enum {@code keyapis.iot_connect.v1.Model.FeatureType}
     */
    public enum FeatureType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>FEATURE_TYPE_UNKNOWN = 0;</code>
       */
      FEATURE_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * Сигнализация о поступившем звонке
       * </pre>
       *
       * <code>INCOMING_CALL = 1;</code>
       */
      INCOMING_CALL(1),
      /**
       * <pre>
       * Сигнализация о доступности устройства
       * </pre>
       *
       * <code>ONLINE = 2;</code>
       */
      ONLINE(2),
      /**
       * <pre>
       * Отклонение звонка
       * </pre>
       *
       * <code>REJECT_CALL = 3;</code>
       */
      REJECT_CALL(3),
      /**
       * <pre>
       * Открытие замка
       * </pre>
       *
       * <code>UNLOCK = 4;</code>
       */
      UNLOCK(4),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>FEATURE_TYPE_UNKNOWN = 0;</code>
       */
      public static final int FEATURE_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Сигнализация о поступившем звонке
       * </pre>
       *
       * <code>INCOMING_CALL = 1;</code>
       */
      public static final int INCOMING_CALL_VALUE = 1;
      /**
       * <pre>
       * Сигнализация о доступности устройства
       * </pre>
       *
       * <code>ONLINE = 2;</code>
       */
      public static final int ONLINE_VALUE = 2;
      /**
       * <pre>
       * Отклонение звонка
       * </pre>
       *
       * <code>REJECT_CALL = 3;</code>
       */
      public static final int REJECT_CALL_VALUE = 3;
      /**
       * <pre>
       * Открытие замка
       * </pre>
       *
       * <code>UNLOCK = 4;</code>
       */
      public static final int UNLOCK_VALUE = 4;


      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 FeatureType 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 FeatureType forNumber(int value) {
        switch (value) {
          case 0: return FEATURE_TYPE_UNKNOWN;
          case 1: return INCOMING_CALL;
          case 2: return ONLINE;
          case 3: return REJECT_CALL;
          case 4: return UNLOCK;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<FeatureType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          FeatureType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<FeatureType>() {
              public FeatureType findValueByNumber(int number) {
                return FeatureType.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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.getDescriptor().getEnumTypes().get(0);
      }

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

      public static FeatureType 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 FeatureType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.iot_connect.v1.Model.FeatureType)
    }

    public static final int ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object id_ = "";
    /**
     * <pre>
     * Идентификатор модели
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор модели
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MANUFACTURER_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object manufacturer_ = "";
    /**
     * <pre>
     * Производитель
     * </pre>
     *
     * <code>string manufacturer = 2;</code>
     * @return The manufacturer.
     */
    @java.lang.Override
    public java.lang.String getManufacturer() {
      java.lang.Object ref = manufacturer_;
      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();
        manufacturer_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Производитель
     * </pre>
     *
     * <code>string manufacturer = 2;</code>
     * @return The bytes for manufacturer.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getManufacturerBytes() {
      java.lang.Object ref = manufacturer_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        manufacturer_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODEL_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object model_ = "";
    /**
     * <pre>
     * Название модели
     * </pre>
     *
     * <code>string model = 3;</code>
     * @return The model.
     */
    @java.lang.Override
    public java.lang.String getModel() {
      java.lang.Object ref = model_;
      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();
        model_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Название модели
     * </pre>
     *
     * <code>string model = 3;</code>
     * @return The bytes for model.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getModelBytes() {
      java.lang.Object ref = model_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        model_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HW_VERSION_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object hwVersion_ = "";
    /**
     * <pre>
     * Версия оборудования
     * </pre>
     *
     * <code>string hw_version = 4;</code>
     * @return The hwVersion.
     */
    @java.lang.Override
    public java.lang.String getHwVersion() {
      java.lang.Object ref = hwVersion_;
      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();
        hwVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Версия оборудования
     * </pre>
     *
     * <code>string hw_version = 4;</code>
     * @return The bytes for hwVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHwVersionBytes() {
      java.lang.Object ref = hwVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hwVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SW_VERSION_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object swVersion_ = "";
    /**
     * <pre>
     * Версия прошивки
     * </pre>
     *
     * <code>string sw_version = 5;</code>
     * @return The swVersion.
     */
    @java.lang.Override
    public java.lang.String getSwVersion() {
      java.lang.Object ref = swVersion_;
      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();
        swVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Версия прошивки
     * </pre>
     *
     * <code>string sw_version = 5;</code>
     * @return The bytes for swVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSwVersionBytes() {
      java.lang.Object ref = swVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        swVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     * <pre>
     * Описание
     * </pre>
     *
     * <code>string description = 6;</code>
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      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();
        description_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Описание
     * </pre>
     *
     * <code>string description = 6;</code>
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CATEGORY_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object category_ = "";
    /**
     * <pre>
     * Категория устройства
     * </pre>
     *
     * <code>string category = 7;</code>
     * @return The category.
     */
    @java.lang.Override
    public java.lang.String getCategory() {
      java.lang.Object ref = category_;
      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();
        category_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Категория устройства
     * </pre>
     *
     * <code>string category = 7;</code>
     * @return The bytes for category.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCategoryBytes() {
      java.lang.Object ref = category_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        category_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FEATURE_TYPES_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> featureTypes_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType> featureTypes_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType>() {
              public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType convert(java.lang.Integer from) {
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType.forNumber(from);
                return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType.UNRECOGNIZED : result;
              }
            };
    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @return A list containing the featureTypes.
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType> getFeatureTypesList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType>(featureTypes_, featureTypes_converter_);
    }
    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @return The count of featureTypes.
     */
    @java.lang.Override
    public int getFeatureTypesCount() {
      return featureTypes_.size();
    }
    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @param index The index of the element to return.
     * @return The featureTypes at the given index.
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType getFeatureTypes(int index) {
      return featureTypes_converter_.convert(featureTypes_.get(index));
    }
    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @return A list containing the enum numeric values on the wire for featureTypes.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
    getFeatureTypesValueList() {
      return featureTypes_;
    }
    /**
     * <pre>
     * Список функций
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of featureTypes at the given index.
     */
    @java.lang.Override
    public int getFeatureTypesValue(int index) {
      return featureTypes_.get(index);
    }
    private int featureTypesMemoizedSerializedSize;

    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 {
      getSerializedSize();
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(manufacturer_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, manufacturer_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(model_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, model_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hwVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, hwVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(swVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, swVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, description_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(category_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, category_);
      }
      if (getFeatureTypesList().size() > 0) {
        output.writeUInt32NoTag(66);
        output.writeUInt32NoTag(featureTypesMemoizedSerializedSize);
      }
      for (int i = 0; i < featureTypes_.size(); i++) {
        output.writeEnumNoTag(featureTypes_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(manufacturer_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, manufacturer_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(model_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, model_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hwVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, hwVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(swVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, swVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, description_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(category_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, category_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < featureTypes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(featureTypes_.get(i));
        }
        size += dataSize;
        if (!getFeatureTypesList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }featureTypesMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model) obj;

      if (!getId()
          .equals(other.getId())) return false;
      if (!getManufacturer()
          .equals(other.getManufacturer())) return false;
      if (!getModel()
          .equals(other.getModel())) return false;
      if (!getHwVersion()
          .equals(other.getHwVersion())) return false;
      if (!getSwVersion()
          .equals(other.getSwVersion())) return false;
      if (!getDescription()
          .equals(other.getDescription())) return false;
      if (!getCategory()
          .equals(other.getCategory())) return false;
      if (!featureTypes_.equals(other.featureTypes_)) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + MANUFACTURER_FIELD_NUMBER;
      hash = (53 * hash) + getManufacturer().hashCode();
      hash = (37 * hash) + MODEL_FIELD_NUMBER;
      hash = (53 * hash) + getModel().hashCode();
      hash = (37 * hash) + HW_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getHwVersion().hashCode();
      hash = (37 * hash) + SW_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getSwVersion().hashCode();
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      hash = (37 * hash) + CATEGORY_FIELD_NUMBER;
      hash = (53 * hash) + getCategory().hashCode();
      if (getFeatureTypesCount() > 0) {
        hash = (37 * hash) + FEATURE_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + featureTypes_.hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Объект Модель устройства
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.Model}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.Model)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.ModelOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Model_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Model_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = "";
        manufacturer_ = "";
        model_ = "";
        hwVersion_ = "";
        swVersion_ = "";
        description_ = "";
        category_ = "";
        featureTypes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Model_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model result) {
        if (((bitField0_ & 0x00000080) != 0)) {
          featureTypes_ = java.util.Collections.unmodifiableList(featureTypes_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.featureTypes_ = featureTypes_;
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.manufacturer_ = manufacturer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.model_ = model_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.hwVersion_ = hwVersion_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.swVersion_ = swVersion_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.description_ = description_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.category_ = category_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getManufacturer().isEmpty()) {
          manufacturer_ = other.manufacturer_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getModel().isEmpty()) {
          model_ = other.model_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.getHwVersion().isEmpty()) {
          hwVersion_ = other.hwVersion_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (!other.getSwVersion().isEmpty()) {
          swVersion_ = other.swVersion_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (!other.getCategory().isEmpty()) {
          category_ = other.category_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (!other.featureTypes_.isEmpty()) {
          if (featureTypes_.isEmpty()) {
            featureTypes_ = other.featureTypes_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureFeatureTypesIsMutable();
            featureTypes_.addAll(other.featureTypes_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                id_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                manufacturer_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                model_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                hwVersion_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                swVersion_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                description_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                category_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 64: {
                int tmpRaw = input.readEnum();
                ensureFeatureTypesIsMutable();
                featureTypes_.add(tmpRaw);
                break;
              } // case 64
              case 66: {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while(input.getBytesUntilLimit() > 0) {
                  int tmpRaw = input.readEnum();
                  ensureFeatureTypesIsMutable();
                  featureTypes_.add(tmpRaw);
                }
                input.popLimit(oldLimit);
                break;
              } // case 66
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Идентификатор модели
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор модели
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор модели
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор модели
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        id_ = getDefaultInstance().getId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор модели
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object manufacturer_ = "";
      /**
       * <pre>
       * Производитель
       * </pre>
       *
       * <code>string manufacturer = 2;</code>
       * @return The manufacturer.
       */
      public java.lang.String getManufacturer() {
        java.lang.Object ref = manufacturer_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          manufacturer_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Производитель
       * </pre>
       *
       * <code>string manufacturer = 2;</code>
       * @return The bytes for manufacturer.
       */
      public com.google.protobuf.ByteString
          getManufacturerBytes() {
        java.lang.Object ref = manufacturer_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          manufacturer_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Производитель
       * </pre>
       *
       * <code>string manufacturer = 2;</code>
       * @param value The manufacturer to set.
       * @return This builder for chaining.
       */
      public Builder setManufacturer(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        manufacturer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Производитель
       * </pre>
       *
       * <code>string manufacturer = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearManufacturer() {
        manufacturer_ = getDefaultInstance().getManufacturer();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Производитель
       * </pre>
       *
       * <code>string manufacturer = 2;</code>
       * @param value The bytes for manufacturer to set.
       * @return This builder for chaining.
       */
      public Builder setManufacturerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        manufacturer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object model_ = "";
      /**
       * <pre>
       * Название модели
       * </pre>
       *
       * <code>string model = 3;</code>
       * @return The model.
       */
      public java.lang.String getModel() {
        java.lang.Object ref = model_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          model_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Название модели
       * </pre>
       *
       * <code>string model = 3;</code>
       * @return The bytes for model.
       */
      public com.google.protobuf.ByteString
          getModelBytes() {
        java.lang.Object ref = model_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          model_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Название модели
       * </pre>
       *
       * <code>string model = 3;</code>
       * @param value The model to set.
       * @return This builder for chaining.
       */
      public Builder setModel(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        model_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Название модели
       * </pre>
       *
       * <code>string model = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearModel() {
        model_ = getDefaultInstance().getModel();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Название модели
       * </pre>
       *
       * <code>string model = 3;</code>
       * @param value The bytes for model to set.
       * @return This builder for chaining.
       */
      public Builder setModelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        model_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object hwVersion_ = "";
      /**
       * <pre>
       * Версия оборудования
       * </pre>
       *
       * <code>string hw_version = 4;</code>
       * @return The hwVersion.
       */
      public java.lang.String getHwVersion() {
        java.lang.Object ref = hwVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hwVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Версия оборудования
       * </pre>
       *
       * <code>string hw_version = 4;</code>
       * @return The bytes for hwVersion.
       */
      public com.google.protobuf.ByteString
          getHwVersionBytes() {
        java.lang.Object ref = hwVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hwVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Версия оборудования
       * </pre>
       *
       * <code>string hw_version = 4;</code>
       * @param value The hwVersion to set.
       * @return This builder for chaining.
       */
      public Builder setHwVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        hwVersion_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Версия оборудования
       * </pre>
       *
       * <code>string hw_version = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearHwVersion() {
        hwVersion_ = getDefaultInstance().getHwVersion();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Версия оборудования
       * </pre>
       *
       * <code>string hw_version = 4;</code>
       * @param value The bytes for hwVersion to set.
       * @return This builder for chaining.
       */
      public Builder setHwVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        hwVersion_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object swVersion_ = "";
      /**
       * <pre>
       * Версия прошивки
       * </pre>
       *
       * <code>string sw_version = 5;</code>
       * @return The swVersion.
       */
      public java.lang.String getSwVersion() {
        java.lang.Object ref = swVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          swVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Версия прошивки
       * </pre>
       *
       * <code>string sw_version = 5;</code>
       * @return The bytes for swVersion.
       */
      public com.google.protobuf.ByteString
          getSwVersionBytes() {
        java.lang.Object ref = swVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          swVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Версия прошивки
       * </pre>
       *
       * <code>string sw_version = 5;</code>
       * @param value The swVersion to set.
       * @return This builder for chaining.
       */
      public Builder setSwVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        swVersion_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Версия прошивки
       * </pre>
       *
       * <code>string sw_version = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSwVersion() {
        swVersion_ = getDefaultInstance().getSwVersion();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Версия прошивки
       * </pre>
       *
       * <code>string sw_version = 5;</code>
       * @param value The bytes for swVersion to set.
       * @return This builder for chaining.
       */
      public Builder setSwVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        swVersion_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       * <pre>
       * Описание
       * </pre>
       *
       * <code>string description = 6;</code>
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Описание
       * </pre>
       *
       * <code>string description = 6;</code>
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Описание
       * </pre>
       *
       * <code>string description = 6;</code>
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Описание
       * </pre>
       *
       * <code>string description = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Описание
       * </pre>
       *
       * <code>string description = 6;</code>
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        description_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object category_ = "";
      /**
       * <pre>
       * Категория устройства
       * </pre>
       *
       * <code>string category = 7;</code>
       * @return The category.
       */
      public java.lang.String getCategory() {
        java.lang.Object ref = category_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          category_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Категория устройства
       * </pre>
       *
       * <code>string category = 7;</code>
       * @return The bytes for category.
       */
      public com.google.protobuf.ByteString
          getCategoryBytes() {
        java.lang.Object ref = category_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          category_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Категория устройства
       * </pre>
       *
       * <code>string category = 7;</code>
       * @param value The category to set.
       * @return This builder for chaining.
       */
      public Builder setCategory(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        category_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Категория устройства
       * </pre>
       *
       * <code>string category = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearCategory() {
        category_ = getDefaultInstance().getCategory();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Категория устройства
       * </pre>
       *
       * <code>string category = 7;</code>
       * @param value The bytes for category to set.
       * @return This builder for chaining.
       */
      public Builder setCategoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        category_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> featureTypes_ =
        java.util.Collections.emptyList();
      private void ensureFeatureTypesIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          featureTypes_ = new java.util.ArrayList<java.lang.Integer>(featureTypes_);
          bitField0_ |= 0x00000080;
        }
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @return A list containing the featureTypes.
       */
      public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType> getFeatureTypesList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType>(featureTypes_, featureTypes_converter_);
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @return The count of featureTypes.
       */
      public int getFeatureTypesCount() {
        return featureTypes_.size();
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @param index The index of the element to return.
       * @return The featureTypes at the given index.
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType getFeatureTypes(int index) {
        return featureTypes_converter_.convert(featureTypes_.get(index));
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @param index The index to set the value at.
       * @param value The featureTypes to set.
       * @return This builder for chaining.
       */
      public Builder setFeatureTypes(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFeatureTypesIsMutable();
        featureTypes_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @param value The featureTypes to add.
       * @return This builder for chaining.
       */
      public Builder addFeatureTypes(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFeatureTypesIsMutable();
        featureTypes_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @param values The featureTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllFeatureTypes(
          java.lang.Iterable<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType> values) {
        ensureFeatureTypesIsMutable();
        for (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.FeatureType value : values) {
          featureTypes_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @return This builder for chaining.
       */
      public Builder clearFeatureTypes() {
        featureTypes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @return A list containing the enum numeric values on the wire for featureTypes.
       */
      public java.util.List<java.lang.Integer>
      getFeatureTypesValueList() {
        return java.util.Collections.unmodifiableList(featureTypes_);
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of featureTypes at the given index.
       */
      public int getFeatureTypesValue(int index) {
        return featureTypes_.get(index);
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @param index The index to set the value at.
       * @param value The enum numeric value on the wire for featureTypes to set.
       * @return This builder for chaining.
       */
      public Builder setFeatureTypesValue(
          int index, int value) {
        ensureFeatureTypesIsMutable();
        featureTypes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @param value The enum numeric value on the wire for featureTypes to add.
       * @return This builder for chaining.
       */
      public Builder addFeatureTypesValue(int value) {
        ensureFeatureTypesIsMutable();
        featureTypes_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Список функций
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Model.FeatureType feature_types = 8 [json_name = "features"];</code>
       * @param values The enum numeric values on the wire for featureTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllFeatureTypesValue(
          java.lang.Iterable<java.lang.Integer> values) {
        ensureFeatureTypesIsMutable();
        for (int value : values) {
          featureTypes_.add(value);
        }
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.iot_connect.v1.Model)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.Model)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Model>
        PARSER = new com.google.protobuf.AbstractParser<Model>() {
      @java.lang.Override
      public Model parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.Device)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор устройства на платформе Ключ.
     * Конкатенация user_id и device_id плафтормы Ключ
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * Идентификатор устройства на платформе Ключ.
     * Конкатенация user_id и device_id плафтормы Ключ
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * Название устройства на платформе Ключ
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Название устройства на платформе Ключ
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Название устройства от производителя
     * </pre>
     *
     * <code>string default_name = 3;</code>
     * @return The defaultName.
     */
    java.lang.String getDefaultName();
    /**
     * <pre>
     * Название устройства от производителя
     * </pre>
     *
     * <code>string default_name = 3;</code>
     * @return The bytes for defaultName.
     */
    com.google.protobuf.ByteString
        getDefaultNameBytes();

    /**
     * <pre>
     * Адрес дома, где установлено устройство
     * </pre>
     *
     * <code>string home = 4;</code>
     * @return The home.
     */
    java.lang.String getHome();
    /**
     * <pre>
     * Адрес дома, где установлено устройство
     * </pre>
     *
     * <code>string home = 4;</code>
     * @return The bytes for home.
     */
    com.google.protobuf.ByteString
        getHomeBytes();

    /**
     * <pre>
     * Название или номер подъезда
     * </pre>
     *
     * <code>string room = 5;</code>
     * @return The room.
     */
    java.lang.String getRoom();
    /**
     * <pre>
     * Название или номер подъезда
     * </pre>
     *
     * <code>string room = 5;</code>
     * @return The bytes for room.
     */
    com.google.protobuf.ByteString
        getRoomBytes();

    /**
     * <pre>
     * Тип устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
     * @return Whether the model field is set.
     */
    boolean hasModel();
    /**
     * <pre>
     * Тип устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
     * @return The model.
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model getModel();
    /**
     * <pre>
     * Тип устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.ModelOrBuilder getModelOrBuilder();

    /**
     * <pre>
     * HW версия устройства
     * </pre>
     *
     * <code>string hw_version = 7;</code>
     * @return The hwVersion.
     */
    java.lang.String getHwVersion();
    /**
     * <pre>
     * HW версия устройства
     * </pre>
     *
     * <code>string hw_version = 7;</code>
     * @return The bytes for hwVersion.
     */
    com.google.protobuf.ByteString
        getHwVersionBytes();

    /**
     * <pre>
     * SW версия устройства
     * </pre>
     *
     * <code>string sw_version = 8;</code>
     * @return The swVersion.
     */
    java.lang.String getSwVersion();
    /**
     * <pre>
     * SW версия устройства
     * </pre>
     *
     * <code>string sw_version = 8;</code>
     * @return The bytes for swVersion.
     */
    com.google.protobuf.ByteString
        getSwVersionBytes();
  }
  /**
   * <pre>
   * Объект устройства
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.Device}
   */
  public static final class Device extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.Device)
      DeviceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Device.newBuilder() to construct.
    private Device(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Device() {
      id_ = "";
      name_ = "";
      defaultName_ = "";
      home_ = "";
      room_ = "";
      hwVersion_ = "";
      swVersion_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Device_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Device_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object id_ = "";
    /**
     * <pre>
     * Идентификатор устройства на платформе Ключ.
     * Конкатенация user_id и device_id плафтормы Ключ
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор устройства на платформе Ключ.
     * Конкатенация user_id и device_id плафтормы Ключ
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Название устройства на платформе Ключ
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Название устройства на платформе Ключ
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEFAULT_NAME_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object defaultName_ = "";
    /**
     * <pre>
     * Название устройства от производителя
     * </pre>
     *
     * <code>string default_name = 3;</code>
     * @return The defaultName.
     */
    @java.lang.Override
    public java.lang.String getDefaultName() {
      java.lang.Object ref = defaultName_;
      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();
        defaultName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Название устройства от производителя
     * </pre>
     *
     * <code>string default_name = 3;</code>
     * @return The bytes for defaultName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDefaultNameBytes() {
      java.lang.Object ref = defaultName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        defaultName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOME_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object home_ = "";
    /**
     * <pre>
     * Адрес дома, где установлено устройство
     * </pre>
     *
     * <code>string home = 4;</code>
     * @return The home.
     */
    @java.lang.Override
    public java.lang.String getHome() {
      java.lang.Object ref = home_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        home_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Адрес дома, где установлено устройство
     * </pre>
     *
     * <code>string home = 4;</code>
     * @return The bytes for home.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHomeBytes() {
      java.lang.Object ref = home_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        home_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ROOM_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object room_ = "";
    /**
     * <pre>
     * Название или номер подъезда
     * </pre>
     *
     * <code>string room = 5;</code>
     * @return The room.
     */
    @java.lang.Override
    public java.lang.String getRoom() {
      java.lang.Object ref = room_;
      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();
        room_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Название или номер подъезда
     * </pre>
     *
     * <code>string room = 5;</code>
     * @return The bytes for room.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRoomBytes() {
      java.lang.Object ref = room_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        room_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODEL_FIELD_NUMBER = 6;
    private ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model model_;
    /**
     * <pre>
     * Тип устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
     * @return Whether the model field is set.
     */
    @java.lang.Override
    public boolean hasModel() {
      return model_ != null;
    }
    /**
     * <pre>
     * Тип устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
     * @return The model.
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model getModel() {
      return model_ == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.getDefaultInstance() : model_;
    }
    /**
     * <pre>
     * Тип устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.ModelOrBuilder getModelOrBuilder() {
      return model_ == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.getDefaultInstance() : model_;
    }

    public static final int HW_VERSION_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object hwVersion_ = "";
    /**
     * <pre>
     * HW версия устройства
     * </pre>
     *
     * <code>string hw_version = 7;</code>
     * @return The hwVersion.
     */
    @java.lang.Override
    public java.lang.String getHwVersion() {
      java.lang.Object ref = hwVersion_;
      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();
        hwVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * HW версия устройства
     * </pre>
     *
     * <code>string hw_version = 7;</code>
     * @return The bytes for hwVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHwVersionBytes() {
      java.lang.Object ref = hwVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hwVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SW_VERSION_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object swVersion_ = "";
    /**
     * <pre>
     * SW версия устройства
     * </pre>
     *
     * <code>string sw_version = 8;</code>
     * @return The swVersion.
     */
    @java.lang.Override
    public java.lang.String getSwVersion() {
      java.lang.Object ref = swVersion_;
      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();
        swVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * SW версия устройства
     * </pre>
     *
     * <code>string sw_version = 8;</code>
     * @return The bytes for swVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSwVersionBytes() {
      java.lang.Object ref = swVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        swVersion_ = 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(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(defaultName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, defaultName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(home_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, home_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(room_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, room_);
      }
      if (model_ != null) {
        output.writeMessage(6, getModel());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hwVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, hwVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(swVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, swVersion_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(defaultName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, defaultName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(home_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, home_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(room_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, room_);
      }
      if (model_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getModel());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hwVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, hwVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(swVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, swVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device) obj;

      if (!getId()
          .equals(other.getId())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getDefaultName()
          .equals(other.getDefaultName())) return false;
      if (!getHome()
          .equals(other.getHome())) return false;
      if (!getRoom()
          .equals(other.getRoom())) return false;
      if (hasModel() != other.hasModel()) return false;
      if (hasModel()) {
        if (!getModel()
            .equals(other.getModel())) return false;
      }
      if (!getHwVersion()
          .equals(other.getHwVersion())) return false;
      if (!getSwVersion()
          .equals(other.getSwVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + DEFAULT_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getDefaultName().hashCode();
      hash = (37 * hash) + HOME_FIELD_NUMBER;
      hash = (53 * hash) + getHome().hashCode();
      hash = (37 * hash) + ROOM_FIELD_NUMBER;
      hash = (53 * hash) + getRoom().hashCode();
      if (hasModel()) {
        hash = (37 * hash) + MODEL_FIELD_NUMBER;
        hash = (53 * hash) + getModel().hashCode();
      }
      hash = (37 * hash) + HW_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getHwVersion().hashCode();
      hash = (37 * hash) + SW_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getSwVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Объект устройства
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.Device}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.Device)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Device_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Device_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = "";
        name_ = "";
        defaultName_ = "";
        home_ = "";
        room_ = "";
        model_ = null;
        if (modelBuilder_ != null) {
          modelBuilder_.dispose();
          modelBuilder_ = null;
        }
        hwVersion_ = "";
        swVersion_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_Device_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.defaultName_ = defaultName_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.home_ = home_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.room_ = room_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.model_ = modelBuilder_ == null
              ? model_
              : modelBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.hwVersion_ = hwVersion_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.swVersion_ = swVersion_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getDefaultName().isEmpty()) {
          defaultName_ = other.defaultName_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.getHome().isEmpty()) {
          home_ = other.home_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (!other.getRoom().isEmpty()) {
          room_ = other.room_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasModel()) {
          mergeModel(other.getModel());
        }
        if (!other.getHwVersion().isEmpty()) {
          hwVersion_ = other.hwVersion_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (!other.getSwVersion().isEmpty()) {
          swVersion_ = other.swVersion_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                id_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                defaultName_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                home_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                room_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getModelFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                hwVersion_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                swVersion_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Идентификатор устройства на платформе Ключ.
       * Конкатенация user_id и device_id плафтормы Ключ
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор устройства на платформе Ключ.
       * Конкатенация user_id и device_id плафтормы Ключ
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор устройства на платформе Ключ.
       * Конкатенация user_id и device_id плафтормы Ключ
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор устройства на платформе Ключ.
       * Конкатенация user_id и device_id плафтормы Ключ
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        id_ = getDefaultInstance().getId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор устройства на платформе Ключ.
       * Конкатенация user_id и device_id плафтормы Ключ
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Название устройства на платформе Ключ
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Название устройства на платформе Ключ
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Название устройства на платформе Ключ
       * </pre>
       *
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Название устройства на платформе Ключ
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Название устройства на платформе Ключ
       * </pre>
       *
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object defaultName_ = "";
      /**
       * <pre>
       * Название устройства от производителя
       * </pre>
       *
       * <code>string default_name = 3;</code>
       * @return The defaultName.
       */
      public java.lang.String getDefaultName() {
        java.lang.Object ref = defaultName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          defaultName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Название устройства от производителя
       * </pre>
       *
       * <code>string default_name = 3;</code>
       * @return The bytes for defaultName.
       */
      public com.google.protobuf.ByteString
          getDefaultNameBytes() {
        java.lang.Object ref = defaultName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          defaultName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Название устройства от производителя
       * </pre>
       *
       * <code>string default_name = 3;</code>
       * @param value The defaultName to set.
       * @return This builder for chaining.
       */
      public Builder setDefaultName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        defaultName_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Название устройства от производителя
       * </pre>
       *
       * <code>string default_name = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDefaultName() {
        defaultName_ = getDefaultInstance().getDefaultName();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Название устройства от производителя
       * </pre>
       *
       * <code>string default_name = 3;</code>
       * @param value The bytes for defaultName to set.
       * @return This builder for chaining.
       */
      public Builder setDefaultNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        defaultName_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object home_ = "";
      /**
       * <pre>
       * Адрес дома, где установлено устройство
       * </pre>
       *
       * <code>string home = 4;</code>
       * @return The home.
       */
      public java.lang.String getHome() {
        java.lang.Object ref = home_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          home_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Адрес дома, где установлено устройство
       * </pre>
       *
       * <code>string home = 4;</code>
       * @return The bytes for home.
       */
      public com.google.protobuf.ByteString
          getHomeBytes() {
        java.lang.Object ref = home_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          home_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Адрес дома, где установлено устройство
       * </pre>
       *
       * <code>string home = 4;</code>
       * @param value The home to set.
       * @return This builder for chaining.
       */
      public Builder setHome(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        home_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Адрес дома, где установлено устройство
       * </pre>
       *
       * <code>string home = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearHome() {
        home_ = getDefaultInstance().getHome();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Адрес дома, где установлено устройство
       * </pre>
       *
       * <code>string home = 4;</code>
       * @param value The bytes for home to set.
       * @return This builder for chaining.
       */
      public Builder setHomeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        home_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object room_ = "";
      /**
       * <pre>
       * Название или номер подъезда
       * </pre>
       *
       * <code>string room = 5;</code>
       * @return The room.
       */
      public java.lang.String getRoom() {
        java.lang.Object ref = room_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          room_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Название или номер подъезда
       * </pre>
       *
       * <code>string room = 5;</code>
       * @return The bytes for room.
       */
      public com.google.protobuf.ByteString
          getRoomBytes() {
        java.lang.Object ref = room_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          room_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Название или номер подъезда
       * </pre>
       *
       * <code>string room = 5;</code>
       * @param value The room to set.
       * @return This builder for chaining.
       */
      public Builder setRoom(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        room_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Название или номер подъезда
       * </pre>
       *
       * <code>string room = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearRoom() {
        room_ = getDefaultInstance().getRoom();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Название или номер подъезда
       * </pre>
       *
       * <code>string room = 5;</code>
       * @param value The bytes for room to set.
       * @return This builder for chaining.
       */
      public Builder setRoomBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        room_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model model_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.ModelOrBuilder> modelBuilder_;
      /**
       * <pre>
       * Тип устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
       * @return Whether the model field is set.
       */
      public boolean hasModel() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Тип устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
       * @return The model.
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model getModel() {
        if (modelBuilder_ == null) {
          return model_ == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.getDefaultInstance() : model_;
        } else {
          return modelBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Тип устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
       */
      public Builder setModel(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model value) {
        if (modelBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          model_ = value;
        } else {
          modelBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
       */
      public Builder setModel(
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.Builder builderForValue) {
        if (modelBuilder_ == null) {
          model_ = builderForValue.build();
        } else {
          modelBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
       */
      public Builder mergeModel(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model value) {
        if (modelBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            model_ != null &&
            model_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.getDefaultInstance()) {
            getModelBuilder().mergeFrom(value);
          } else {
            model_ = value;
          }
        } else {
          modelBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
       */
      public Builder clearModel() {
        bitField0_ = (bitField0_ & ~0x00000020);
        model_ = null;
        if (modelBuilder_ != null) {
          modelBuilder_.dispose();
          modelBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.Builder getModelBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getModelFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Тип устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.ModelOrBuilder getModelOrBuilder() {
        if (modelBuilder_ != null) {
          return modelBuilder_.getMessageOrBuilder();
        } else {
          return model_ == null ?
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.getDefaultInstance() : model_;
        }
      }
      /**
       * <pre>
       * Тип устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.Model model = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.ModelOrBuilder> 
          getModelFieldBuilder() {
        if (modelBuilder_ == null) {
          modelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Model.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.ModelOrBuilder>(
                  getModel(),
                  getParentForChildren(),
                  isClean());
          model_ = null;
        }
        return modelBuilder_;
      }

      private java.lang.Object hwVersion_ = "";
      /**
       * <pre>
       * HW версия устройства
       * </pre>
       *
       * <code>string hw_version = 7;</code>
       * @return The hwVersion.
       */
      public java.lang.String getHwVersion() {
        java.lang.Object ref = hwVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hwVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * HW версия устройства
       * </pre>
       *
       * <code>string hw_version = 7;</code>
       * @return The bytes for hwVersion.
       */
      public com.google.protobuf.ByteString
          getHwVersionBytes() {
        java.lang.Object ref = hwVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hwVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * HW версия устройства
       * </pre>
       *
       * <code>string hw_version = 7;</code>
       * @param value The hwVersion to set.
       * @return This builder for chaining.
       */
      public Builder setHwVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        hwVersion_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HW версия устройства
       * </pre>
       *
       * <code>string hw_version = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearHwVersion() {
        hwVersion_ = getDefaultInstance().getHwVersion();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HW версия устройства
       * </pre>
       *
       * <code>string hw_version = 7;</code>
       * @param value The bytes for hwVersion to set.
       * @return This builder for chaining.
       */
      public Builder setHwVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        hwVersion_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object swVersion_ = "";
      /**
       * <pre>
       * SW версия устройства
       * </pre>
       *
       * <code>string sw_version = 8;</code>
       * @return The swVersion.
       */
      public java.lang.String getSwVersion() {
        java.lang.Object ref = swVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          swVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * SW версия устройства
       * </pre>
       *
       * <code>string sw_version = 8;</code>
       * @return The bytes for swVersion.
       */
      public com.google.protobuf.ByteString
          getSwVersionBytes() {
        java.lang.Object ref = swVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          swVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * SW версия устройства
       * </pre>
       *
       * <code>string sw_version = 8;</code>
       * @param value The swVersion to set.
       * @return This builder for chaining.
       */
      public Builder setSwVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        swVersion_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SW версия устройства
       * </pre>
       *
       * <code>string sw_version = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearSwVersion() {
        swVersion_ = getDefaultInstance().getSwVersion();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SW версия устройства
       * </pre>
       *
       * <code>string sw_version = 8;</code>
       * @param value The bytes for swVersion to set.
       * @return This builder for chaining.
       */
      public Builder setSwVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        swVersion_ = value;
        bitField0_ |= 0x00000080;
        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:keyapis.iot_connect.v1.Device)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.Device)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Device>
        PARSER = new com.google.protobuf.AbstractParser<Device>() {
      @java.lang.Override
      public Device parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceStateArrayOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.DeviceStateArray)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState> 
        getStatesList();
    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState getStates(int index);
    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    int getStatesCount();
    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    java.util.List<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder> 
        getStatesOrBuilderList();
    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder getStatesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Массив статусов устройства
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.DeviceStateArray}
   */
  public static final class DeviceStateArray extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.DeviceStateArray)
      DeviceStateArrayOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceStateArray.newBuilder() to construct.
    private DeviceStateArray(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceStateArray() {
      states_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceStateArray_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceStateArray_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray.Builder.class);
    }

    public static final int STATES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState> states_;
    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState> getStatesList() {
      return states_;
    }
    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder> 
        getStatesOrBuilderList() {
      return states_;
    }
    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    @java.lang.Override
    public int getStatesCount() {
      return states_.size();
    }
    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState getStates(int index) {
      return states_.get(index);
    }
    /**
     * <pre>
     * Статусы устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder getStatesOrBuilder(
        int index) {
      return states_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getStatesCount() > 0) {
        hash = (37 * hash) + STATES_FIELD_NUMBER;
        hash = (53 * hash) + getStatesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Массив статусов устройства
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.DeviceStateArray}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.DeviceStateArray)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArrayOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceStateArray_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceStateArray_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (statesBuilder_ == null) {
          states_ = java.util.Collections.emptyList();
        } else {
          states_ = null;
          statesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceStateArray_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray result) {
        if (statesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            states_ = java.util.Collections.unmodifiableList(states_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.states_ = states_;
        } else {
          result.states_ = statesBuilder_.build();
        }
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray.getDefaultInstance()) return this;
        if (statesBuilder_ == null) {
          if (!other.states_.isEmpty()) {
            if (states_.isEmpty()) {
              states_ = other.states_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureStatesIsMutable();
              states_.addAll(other.states_);
            }
            onChanged();
          }
        } else {
          if (!other.states_.isEmpty()) {
            if (statesBuilder_.isEmpty()) {
              statesBuilder_.dispose();
              statesBuilder_ = null;
              states_ = other.states_;
              bitField0_ = (bitField0_ & ~0x00000001);
              statesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getStatesFieldBuilder() : null;
            } else {
              statesBuilder_.addAllMessages(other.states_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState m =
                    input.readMessage(
                        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.parser(),
                        extensionRegistry);
                if (statesBuilder_ == null) {
                  ensureStatesIsMutable();
                  states_.add(m);
                } else {
                  statesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState> states_ =
        java.util.Collections.emptyList();
      private void ensureStatesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          states_ = new java.util.ArrayList<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState>(states_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder> statesBuilder_;

      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState> getStatesList() {
        if (statesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(states_);
        } else {
          return statesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public int getStatesCount() {
        if (statesBuilder_ == null) {
          return states_.size();
        } else {
          return statesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState getStates(int index) {
        if (statesBuilder_ == null) {
          return states_.get(index);
        } else {
          return statesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public Builder setStates(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState value) {
        if (statesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStatesIsMutable();
          states_.set(index, value);
          onChanged();
        } else {
          statesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public Builder setStates(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder builderForValue) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          states_.set(index, builderForValue.build());
          onChanged();
        } else {
          statesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public Builder addStates(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState value) {
        if (statesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStatesIsMutable();
          states_.add(value);
          onChanged();
        } else {
          statesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public Builder addStates(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState value) {
        if (statesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStatesIsMutable();
          states_.add(index, value);
          onChanged();
        } else {
          statesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public Builder addStates(
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder builderForValue) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          states_.add(builderForValue.build());
          onChanged();
        } else {
          statesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public Builder addStates(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder builderForValue) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          states_.add(index, builderForValue.build());
          onChanged();
        } else {
          statesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public Builder addAllStates(
          java.lang.Iterable<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState> values) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, states_);
          onChanged();
        } else {
          statesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public Builder clearStates() {
        if (statesBuilder_ == null) {
          states_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          statesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public Builder removeStates(int index) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          states_.remove(index);
          onChanged();
        } else {
          statesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder getStatesBuilder(
          int index) {
        return getStatesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder getStatesOrBuilder(
          int index) {
        if (statesBuilder_ == null) {
          return states_.get(index);  } else {
          return statesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public java.util.List<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder> 
           getStatesOrBuilderList() {
        if (statesBuilder_ != null) {
          return statesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(states_);
        }
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder addStatesBuilder() {
        return getStatesFieldBuilder().addBuilder(
            ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.getDefaultInstance());
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder addStatesBuilder(
          int index) {
        return getStatesFieldBuilder().addBuilder(
            index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.getDefaultInstance());
      }
      /**
       * <pre>
       * Статусы устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceState states = 1;</code>
       */
      public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder> 
           getStatesBuilderList() {
        return getStatesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder> 
          getStatesFieldBuilder() {
        if (statesBuilder_ == null) {
          statesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder>(
                  states_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          states_ = null;
        }
        return statesBuilder_;
      }
      @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:keyapis.iot_connect.v1.DeviceStateArray)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.DeviceStateArray)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeviceStateArray>
        PARSER = new com.google.protobuf.AbstractParser<DeviceStateArray>() {
      @java.lang.Override
      public DeviceStateArray parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceCommandArrayOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.DeviceCommandArray)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand> 
        getStatesList();
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand getStates(int index);
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    int getStatesCount();
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    java.util.List<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder> 
        getStatesOrBuilderList();
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder getStatesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Массив команд на изменение статуса устройства
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.DeviceCommandArray}
   */
  public static final class DeviceCommandArray extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.DeviceCommandArray)
      DeviceCommandArrayOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceCommandArray.newBuilder() to construct.
    private DeviceCommandArray(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceCommandArray() {
      states_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommandArray_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommandArray_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray.Builder.class);
    }

    public static final int STATES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand> states_;
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand> getStatesList() {
      return states_;
    }
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder> 
        getStatesOrBuilderList() {
      return states_;
    }
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    @java.lang.Override
    public int getStatesCount() {
      return states_.size();
    }
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand getStates(int index) {
      return states_.get(index);
    }
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder getStatesOrBuilder(
        int index) {
      return states_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getStatesCount() > 0) {
        hash = (37 * hash) + STATES_FIELD_NUMBER;
        hash = (53 * hash) + getStatesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Массив команд на изменение статуса устройства
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.DeviceCommandArray}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.DeviceCommandArray)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArrayOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommandArray_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommandArray_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (statesBuilder_ == null) {
          states_ = java.util.Collections.emptyList();
        } else {
          states_ = null;
          statesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommandArray_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray result) {
        if (statesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            states_ = java.util.Collections.unmodifiableList(states_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.states_ = states_;
        } else {
          result.states_ = statesBuilder_.build();
        }
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray.getDefaultInstance()) return this;
        if (statesBuilder_ == null) {
          if (!other.states_.isEmpty()) {
            if (states_.isEmpty()) {
              states_ = other.states_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureStatesIsMutable();
              states_.addAll(other.states_);
            }
            onChanged();
          }
        } else {
          if (!other.states_.isEmpty()) {
            if (statesBuilder_.isEmpty()) {
              statesBuilder_.dispose();
              statesBuilder_ = null;
              states_ = other.states_;
              bitField0_ = (bitField0_ & ~0x00000001);
              statesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getStatesFieldBuilder() : null;
            } else {
              statesBuilder_.addAllMessages(other.states_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand m =
                    input.readMessage(
                        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.parser(),
                        extensionRegistry);
                if (statesBuilder_ == null) {
                  ensureStatesIsMutable();
                  states_.add(m);
                } else {
                  statesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand> states_ =
        java.util.Collections.emptyList();
      private void ensureStatesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          states_ = new java.util.ArrayList<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand>(states_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder> statesBuilder_;

      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand> getStatesList() {
        if (statesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(states_);
        } else {
          return statesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public int getStatesCount() {
        if (statesBuilder_ == null) {
          return states_.size();
        } else {
          return statesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand getStates(int index) {
        if (statesBuilder_ == null) {
          return states_.get(index);
        } else {
          return statesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public Builder setStates(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand value) {
        if (statesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStatesIsMutable();
          states_.set(index, value);
          onChanged();
        } else {
          statesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public Builder setStates(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder builderForValue) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          states_.set(index, builderForValue.build());
          onChanged();
        } else {
          statesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public Builder addStates(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand value) {
        if (statesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStatesIsMutable();
          states_.add(value);
          onChanged();
        } else {
          statesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public Builder addStates(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand value) {
        if (statesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStatesIsMutable();
          states_.add(index, value);
          onChanged();
        } else {
          statesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public Builder addStates(
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder builderForValue) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          states_.add(builderForValue.build());
          onChanged();
        } else {
          statesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public Builder addStates(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder builderForValue) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          states_.add(index, builderForValue.build());
          onChanged();
        } else {
          statesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public Builder addAllStates(
          java.lang.Iterable<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand> values) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, states_);
          onChanged();
        } else {
          statesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public Builder clearStates() {
        if (statesBuilder_ == null) {
          states_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          statesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public Builder removeStates(int index) {
        if (statesBuilder_ == null) {
          ensureStatesIsMutable();
          states_.remove(index);
          onChanged();
        } else {
          statesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder getStatesBuilder(
          int index) {
        return getStatesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder getStatesOrBuilder(
          int index) {
        if (statesBuilder_ == null) {
          return states_.get(index);  } else {
          return statesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public java.util.List<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder> 
           getStatesOrBuilderList() {
        if (statesBuilder_ != null) {
          return statesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(states_);
        }
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder addStatesBuilder() {
        return getStatesFieldBuilder().addBuilder(
            ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.getDefaultInstance());
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder addStatesBuilder(
          int index) {
        return getStatesFieldBuilder().addBuilder(
            index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.getDefaultInstance());
      }
      /**
       * <pre>
       * Команды на изменение статуса устройства
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.DeviceCommand states = 1;</code>
       */
      public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder> 
           getStatesBuilderList() {
        return getStatesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder> 
          getStatesFieldBuilder() {
        if (statesBuilder_ == null) {
          statesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder>(
                  states_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          states_ = null;
        }
        return statesBuilder_;
      }
      @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:keyapis.iot_connect.v1.DeviceCommandArray)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.DeviceCommandArray)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeviceCommandArray>
        PARSER = new com.google.protobuf.AbstractParser<DeviceCommandArray>() {
      @java.lang.Override
      public DeviceCommandArray parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceCommandOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.DeviceCommand)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Тип команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.KeyType command_key_type = 1 [json_name = "key"];</code>
     * @return The enum numeric value on the wire for commandKeyType.
     */
    int getCommandKeyTypeValue();
    /**
     * <pre>
     * Тип команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.KeyType command_key_type = 1 [json_name = "key"];</code>
     * @return The commandKeyType.
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType getCommandKeyType();

    /**
     * <pre>
     * Значение команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * Значение команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
     * @return The value.
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value getValue();
    /**
     * <pre>
     * Значение команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.ValueOrBuilder getValueOrBuilder();
  }
  /**
   * <pre>
   * Команды на изменение статуса устройства
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.DeviceCommand}
   */
  public static final class DeviceCommand extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.DeviceCommand)
      DeviceCommandOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceCommand.newBuilder() to construct.
    private DeviceCommand(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceCommand() {
      commandKeyType_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder.class);
    }

    /**
     * <pre>
     * Список ключей команд на изменение статуса устройства
     * </pre>
     *
     * Protobuf enum {@code keyapis.iot_connect.v1.DeviceCommand.KeyType}
     */
    public enum KeyType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>KEY_TYPE_UNKNOWN = 0;</code>
       */
      KEY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * Отклонение звонка
       * </pre>
       *
       * <code>REJECT_CALL = 1;</code>
       */
      REJECT_CALL(1),
      /**
       * <pre>
       * Открытие замка
       * </pre>
       *
       * <code>UNLOCK = 2;</code>
       */
      UNLOCK(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>KEY_TYPE_UNKNOWN = 0;</code>
       */
      public static final int KEY_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Отклонение звонка
       * </pre>
       *
       * <code>REJECT_CALL = 1;</code>
       */
      public static final int REJECT_CALL_VALUE = 1;
      /**
       * <pre>
       * Открытие замка
       * </pre>
       *
       * <code>UNLOCK = 2;</code>
       */
      public static final int UNLOCK_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 KeyType 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 KeyType forNumber(int value) {
        switch (value) {
          case 0: return KEY_TYPE_UNKNOWN;
          case 1: return REJECT_CALL;
          case 2: return UNLOCK;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<KeyType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          KeyType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<KeyType>() {
              public KeyType findValueByNumber(int number) {
                return KeyType.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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.getDescriptor().getEnumTypes().get(0);
      }

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

      public static KeyType 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 KeyType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.iot_connect.v1.DeviceCommand.KeyType)
    }

    public interface ValueOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.DeviceCommand.Value)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Тип значения команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.Type type = 1;</code>
       * @return The enum numeric value on the wire for type.
       */
      int getTypeValue();
      /**
       * <pre>
       * Тип значения команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.Type type = 1;</code>
       * @return The type.
       */
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type getType();

      /**
       * <pre>
       * Значения команды на изменение статуса устройства типа перечисление
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
       * @return Whether the valueEnumType field is set.
       */
      boolean hasValueEnumType();
      /**
       * <pre>
       * Значения команды на изменение статуса устройства типа перечисление
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
       * @return The enum numeric value on the wire for valueEnumType.
       */
      int getValueEnumTypeValue();
      /**
       * <pre>
       * Значения команды на изменение статуса устройства типа перечисление
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
       * @return The valueEnumType.
       */
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType getValueEnumType();

      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueCase getValueCase();
    }
    /**
     * <pre>
     * Значение команды на изменение статуса устройства
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.DeviceCommand.Value}
     */
    public static final class Value extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.DeviceCommand.Value)
        ValueOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Value.newBuilder() to construct.
      private Value(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Value() {
        type_ = 0;
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Builder.class);
      }

      /**
       * <pre>
       * Тип значения команд на изменение статуса устройства
       * </pre>
       *
       * Protobuf enum {@code keyapis.iot_connect.v1.DeviceCommand.Value.Type}
       */
      public enum Type
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         * Значение не указано
         * </pre>
         *
         * <code>TYPE_UNKNOWN = 0;</code>
         */
        TYPE_UNKNOWN(0),
        /**
         * <pre>
         * Перечисление
         * </pre>
         *
         * <code>ENUM = 1;</code>
         */
        ENUM(1),
        UNRECOGNIZED(-1),
        ;

        /**
         * <pre>
         * Значение не указано
         * </pre>
         *
         * <code>TYPE_UNKNOWN = 0;</code>
         */
        public static final int TYPE_UNKNOWN_VALUE = 0;
        /**
         * <pre>
         * Перечисление
         * </pre>
         *
         * <code>ENUM = 1;</code>
         */
        public static final int ENUM_VALUE = 1;


        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 Type 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 Type forNumber(int value) {
          switch (value) {
            case 0: return TYPE_UNKNOWN;
            case 1: return ENUM;
            default: return null;
          }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<Type>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            Type> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
                public Type findValueByNumber(int number) {
                  return Type.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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.getDescriptor().getEnumTypes().get(0);
        }

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

        public static Type 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 Type(int value) {
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:keyapis.iot_connect.v1.DeviceCommand.Value.Type)
      }

      /**
       * <pre>
       * Значения команд на изменение статуса устройства типа перечисление
       * </pre>
       *
       * Protobuf enum {@code keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType}
       */
      public enum ValueEnumType
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         * Значение не указано
         * </pre>
         *
         * <code>VALUE_ENUM_TYPE_UNKNOWN = 0;</code>
         */
        VALUE_ENUM_TYPE_UNKNOWN(0),
        /**
         * <pre>
         * Отклонение звонка
         * </pre>
         *
         * <code>REJECT = 1;</code>
         */
        REJECT(1),
        /**
         * <pre>
         * Открытие замка
         * </pre>
         *
         * <code>UNLOCK = 2;</code>
         */
        UNLOCK(2),
        UNRECOGNIZED(-1),
        ;

        /**
         * <pre>
         * Значение не указано
         * </pre>
         *
         * <code>VALUE_ENUM_TYPE_UNKNOWN = 0;</code>
         */
        public static final int VALUE_ENUM_TYPE_UNKNOWN_VALUE = 0;
        /**
         * <pre>
         * Отклонение звонка
         * </pre>
         *
         * <code>REJECT = 1;</code>
         */
        public static final int REJECT_VALUE = 1;
        /**
         * <pre>
         * Открытие замка
         * </pre>
         *
         * <code>UNLOCK = 2;</code>
         */
        public static final int UNLOCK_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 ValueEnumType 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 ValueEnumType forNumber(int value) {
          switch (value) {
            case 0: return VALUE_ENUM_TYPE_UNKNOWN;
            case 1: return REJECT;
            case 2: return UNLOCK;
            default: return null;
          }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<ValueEnumType>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            ValueEnumType> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<ValueEnumType>() {
                public ValueEnumType findValueByNumber(int number) {
                  return ValueEnumType.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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.getDescriptor().getEnumTypes().get(1);
        }

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

        public static ValueEnumType 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 ValueEnumType(int value) {
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType)
      }

      private int valueCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object value_;
      public enum ValueCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        VALUE_ENUM_TYPE(2),
        VALUE_NOT_SET(0);
        private final int value;
        private ValueCase(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 ValueCase valueOf(int value) {
          return forNumber(value);
        }

        public static ValueCase forNumber(int value) {
          switch (value) {
            case 2: return VALUE_ENUM_TYPE;
            case 0: return VALUE_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ValueCase
      getValueCase() {
        return ValueCase.forNumber(
            valueCase_);
      }

      public static final int TYPE_FIELD_NUMBER = 1;
      private int type_ = 0;
      /**
       * <pre>
       * Тип значения команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.Type type = 1;</code>
       * @return The enum numeric value on the wire for type.
       */
      @java.lang.Override public int getTypeValue() {
        return type_;
      }
      /**
       * <pre>
       * Тип значения команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.Type type = 1;</code>
       * @return The type.
       */
      @java.lang.Override public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type getType() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type.forNumber(type_);
        return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type.UNRECOGNIZED : result;
      }

      public static final int VALUE_ENUM_TYPE_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Значения команды на изменение статуса устройства типа перечисление
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
       * @return Whether the valueEnumType field is set.
       */
      public boolean hasValueEnumType() {
        return valueCase_ == 2;
      }
      /**
       * <pre>
       * Значения команды на изменение статуса устройства типа перечисление
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
       * @return The enum numeric value on the wire for valueEnumType.
       */
      public int getValueEnumTypeValue() {
        if (valueCase_ == 2) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }
      /**
       * <pre>
       * Значения команды на изменение статуса устройства типа перечисление
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
       * @return The valueEnumType.
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType getValueEnumType() {
        if (valueCase_ == 2) {
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType.forNumber(
              (java.lang.Integer) value_);
          return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType.UNRECOGNIZED : result;
        }
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType.VALUE_ENUM_TYPE_UNKNOWN;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (type_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type.TYPE_UNKNOWN.getNumber()) {
          output.writeEnum(1, type_);
        }
        if (valueCase_ == 2) {
          output.writeEnum(2, ((java.lang.Integer) value_));
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (type_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type.TYPE_UNKNOWN.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, type_);
        }
        if (valueCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, ((java.lang.Integer) value_));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value)) {
          return super.equals(obj);
        }
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value) obj;

        if (type_ != other.type_) return false;
        if (!getValueCase().equals(other.getValueCase())) return false;
        switch (valueCase_) {
          case 2:
            if (getValueEnumTypeValue()
                != other.getValueEnumTypeValue()) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + type_;
        switch (valueCase_) {
          case 2:
            hash = (37 * hash) + VALUE_ENUM_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getValueEnumTypeValue();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * Protobuf type {@code keyapis.iot_connect.v1.DeviceCommand.Value}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.DeviceCommand.Value)
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.ValueOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Builder.class);
        }

        // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          type_ = 0;
          valueCase_ = 0;
          value_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value getDefaultInstanceForType() {
          return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value build() {
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value buildPartial() {
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.type_ = type_;
          }
        }

        private void buildPartialOneofs(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value result) {
          result.valueCase_ = valueCase_;
          result.value_ = this.value_;
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value) {
            return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value other) {
          if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.getDefaultInstance()) return this;
          if (other.type_ != 0) {
            setTypeValue(other.getTypeValue());
          }
          switch (other.getValueCase()) {
            case VALUE_ENUM_TYPE: {
              setValueEnumTypeValue(other.getValueEnumTypeValue());
              break;
            }
            case VALUE_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          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 {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  type_ = input.readEnum();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  int rawValue = input.readEnum();
                  valueCase_ = 2;
                  value_ = rawValue;
                  break;
                } // case 16
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int valueCase_ = 0;
        private java.lang.Object value_;
        public ValueCase
            getValueCase() {
          return ValueCase.forNumber(
              valueCase_);
        }

        public Builder clearValue() {
          valueCase_ = 0;
          value_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private int type_ = 0;
        /**
         * <pre>
         * Тип значения команды на изменение статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.Type type = 1;</code>
         * @return The enum numeric value on the wire for type.
         */
        @java.lang.Override public int getTypeValue() {
          return type_;
        }
        /**
         * <pre>
         * Тип значения команды на изменение статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.Type type = 1;</code>
         * @param value The enum numeric value on the wire for type to set.
         * @return This builder for chaining.
         */
        public Builder setTypeValue(int value) {
          type_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Тип значения команды на изменение статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.Type type = 1;</code>
         * @return The type.
         */
        @java.lang.Override
        public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type getType() {
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type.forNumber(type_);
          return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type.UNRECOGNIZED : result;
        }
        /**
         * <pre>
         * Тип значения команды на изменение статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.Type type = 1;</code>
         * @param value The type to set.
         * @return This builder for chaining.
         */
        public Builder setType(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Type value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          type_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Тип значения команды на изменение статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.Type type = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = 0;
          onChanged();
          return this;
        }

        /**
         * <pre>
         * Значения команды на изменение статуса устройства типа перечисление
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
         * @return Whether the valueEnumType field is set.
         */
        @java.lang.Override
        public boolean hasValueEnumType() {
          return valueCase_ == 2;
        }
        /**
         * <pre>
         * Значения команды на изменение статуса устройства типа перечисление
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
         * @return The enum numeric value on the wire for valueEnumType.
         */
        @java.lang.Override
        public int getValueEnumTypeValue() {
          if (valueCase_ == 2) {
            return ((java.lang.Integer) value_).intValue();
          }
          return 0;
        }
        /**
         * <pre>
         * Значения команды на изменение статуса устройства типа перечисление
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
         * @param value The enum numeric value on the wire for valueEnumType to set.
         * @return This builder for chaining.
         */
        public Builder setValueEnumTypeValue(int value) {
          valueCase_ = 2;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Значения команды на изменение статуса устройства типа перечисление
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
         * @return The valueEnumType.
         */
        @java.lang.Override
        public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType getValueEnumType() {
          if (valueCase_ == 2) {
            ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType.forNumber(
                (java.lang.Integer) value_);
            return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType.UNRECOGNIZED : result;
          }
          return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType.VALUE_ENUM_TYPE_UNKNOWN;
        }
        /**
         * <pre>
         * Значения команды на изменение статуса устройства типа перечисление
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
         * @param value The valueEnumType to set.
         * @return This builder for chaining.
         */
        public Builder setValueEnumType(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.ValueEnumType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          valueCase_ = 2;
          value_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Значения команды на изменение статуса устройства типа перечисление
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceCommand.Value.ValueEnumType value_enum_type = 2 [json_name = "enum_value"];</code>
         * @return This builder for chaining.
         */
        public Builder clearValueEnumType() {
          if (valueCase_ == 2) {
            valueCase_ = 0;
            value_ = null;
            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:keyapis.iot_connect.v1.DeviceCommand.Value)
      }

      // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.DeviceCommand.Value)
      private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value();
      }

      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Value>
          PARSER = new com.google.protobuf.AbstractParser<Value>() {
        @java.lang.Override
        public Value parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

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

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

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int COMMAND_KEY_TYPE_FIELD_NUMBER = 1;
    private int commandKeyType_ = 0;
    /**
     * <pre>
     * Тип команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.KeyType command_key_type = 1 [json_name = "key"];</code>
     * @return The enum numeric value on the wire for commandKeyType.
     */
    @java.lang.Override public int getCommandKeyTypeValue() {
      return commandKeyType_;
    }
    /**
     * <pre>
     * Тип команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.KeyType command_key_type = 1 [json_name = "key"];</code>
     * @return The commandKeyType.
     */
    @java.lang.Override public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType getCommandKeyType() {
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType.forNumber(commandKeyType_);
      return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType.UNRECOGNIZED : result;
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value value_;
    /**
     * <pre>
     * Значение команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return value_ != null;
    }
    /**
     * <pre>
     * Значение команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value getValue() {
      return value_ == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.getDefaultInstance() : value_;
    }
    /**
     * <pre>
     * Значение команды на изменение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.ValueOrBuilder getValueOrBuilder() {
      return value_ == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.getDefaultInstance() : value_;
    }

    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 (commandKeyType_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType.KEY_TYPE_UNKNOWN.getNumber()) {
        output.writeEnum(1, commandKeyType_);
      }
      if (value_ != null) {
        output.writeMessage(2, getValue());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (commandKeyType_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType.KEY_TYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, commandKeyType_);
      }
      if (value_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getValue());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand) obj;

      if (commandKeyType_ != other.commandKeyType_) return false;
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + COMMAND_KEY_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + commandKeyType_;
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Команды на изменение статуса устройства
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.DeviceCommand}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.DeviceCommand)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        commandKeyType_ = 0;
        value_ = null;
        if (valueBuilder_ != null) {
          valueBuilder_.dispose();
          valueBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceCommand_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.commandKeyType_ = commandKeyType_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.value_ = valueBuilder_ == null
              ? value_
              : valueBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.getDefaultInstance()) return this;
        if (other.commandKeyType_ != 0) {
          setCommandKeyTypeValue(other.getCommandKeyTypeValue());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                commandKeyType_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getValueFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int commandKeyType_ = 0;
      /**
       * <pre>
       * Тип команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.KeyType command_key_type = 1 [json_name = "key"];</code>
       * @return The enum numeric value on the wire for commandKeyType.
       */
      @java.lang.Override public int getCommandKeyTypeValue() {
        return commandKeyType_;
      }
      /**
       * <pre>
       * Тип команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.KeyType command_key_type = 1 [json_name = "key"];</code>
       * @param value The enum numeric value on the wire for commandKeyType to set.
       * @return This builder for chaining.
       */
      public Builder setCommandKeyTypeValue(int value) {
        commandKeyType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.KeyType command_key_type = 1 [json_name = "key"];</code>
       * @return The commandKeyType.
       */
      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType getCommandKeyType() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType.forNumber(commandKeyType_);
        return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Тип команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.KeyType command_key_type = 1 [json_name = "key"];</code>
       * @param value The commandKeyType to set.
       * @return This builder for chaining.
       */
      public Builder setCommandKeyType(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.KeyType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        commandKeyType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.KeyType command_key_type = 1 [json_name = "key"];</code>
       * @return This builder for chaining.
       */
      public Builder clearCommandKeyType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        commandKeyType_ = 0;
        onChanged();
        return this;
      }

      private ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value value_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.ValueOrBuilder> valueBuilder_;
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
       * @return The value.
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value getValue() {
        if (valueBuilder_ == null) {
          return value_ == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.getDefaultInstance() : value_;
        } else {
          return valueBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
       */
      public Builder setValue(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
        } else {
          valueBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
       */
      public Builder setValue(
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Builder builderForValue) {
        if (valueBuilder_ == null) {
          value_ = builderForValue.build();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
       */
      public Builder mergeValue(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value value) {
        if (valueBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            value_ != null &&
            value_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.getDefaultInstance()) {
            getValueBuilder().mergeFrom(value);
          } else {
            value_ = value;
          }
        } else {
          valueBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = null;
        if (valueBuilder_ != null) {
          valueBuilder_.dispose();
          valueBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Builder getValueBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getValueFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.ValueOrBuilder getValueOrBuilder() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          return value_ == null ?
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.getDefaultInstance() : value_;
        }
      }
      /**
       * <pre>
       * Значение команды на изменение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceCommand.Value value = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.ValueOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.Value.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand.ValueOrBuilder>(
                  getValue(),
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }
      @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:keyapis.iot_connect.v1.DeviceCommand)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.DeviceCommand)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeviceCommand>
        PARSER = new com.google.protobuf.AbstractParser<DeviceCommand>() {
      @java.lang.Override
      public DeviceCommand parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommand getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceStateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.DeviceState)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Тип статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.KeyType state_key_type = 1 [json_name = "key"];</code>
     * @return The enum numeric value on the wire for stateKeyType.
     */
    int getStateKeyTypeValue();
    /**
     * <pre>
     * Тип статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.KeyType state_key_type = 1 [json_name = "key"];</code>
     * @return The stateKeyType.
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType getStateKeyType();

    /**
     * <pre>
     * Значение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * Значение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
     * @return The value.
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value getValue();
    /**
     * <pre>
     * Значение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.ValueOrBuilder getValueOrBuilder();
  }
  /**
   * <pre>
   * Статус устройства
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.DeviceState}
   */
  public static final class DeviceState extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.DeviceState)
      DeviceStateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceState.newBuilder() to construct.
    private DeviceState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceState() {
      stateKeyType_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder.class);
    }

    /**
     * <pre>
     * Список ключей статусов устройства
     * </pre>
     *
     * Protobuf enum {@code keyapis.iot_connect.v1.DeviceState.KeyType}
     */
    public enum KeyType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>KEY_TYPE_UNKNOWN = 0;</code>
       */
      KEY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * Статус доступности устройства
       * </pre>
       *
       * <code>ONLINE = 1;</code>
       */
      ONLINE(1),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>KEY_TYPE_UNKNOWN = 0;</code>
       */
      public static final int KEY_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Статус доступности устройства
       * </pre>
       *
       * <code>ONLINE = 1;</code>
       */
      public static final int ONLINE_VALUE = 1;


      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 KeyType 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 KeyType forNumber(int value) {
        switch (value) {
          case 0: return KEY_TYPE_UNKNOWN;
          case 1: return ONLINE;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<KeyType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          KeyType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<KeyType>() {
              public KeyType findValueByNumber(int number) {
                return KeyType.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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.getDescriptor().getEnumTypes().get(0);
      }

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

      public static KeyType 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 KeyType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.iot_connect.v1.DeviceState.KeyType)
    }

    public interface ValueOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.DeviceState.Value)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Тип значения статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value.Type type = 1;</code>
       * @return The enum numeric value on the wire for type.
       */
      int getTypeValue();
      /**
       * <pre>
       * Тип значения статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value.Type type = 1;</code>
       * @return The type.
       */
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type getType();

      /**
       * <pre>
       * Значение логического типа
       * </pre>
       *
       * <code>bool is_value = 2 [json_name = "bool_value"];</code>
       * @return Whether the isValue field is set.
       */
      boolean hasIsValue();
      /**
       * <pre>
       * Значение логического типа
       * </pre>
       *
       * <code>bool is_value = 2 [json_name = "bool_value"];</code>
       * @return The isValue.
       */
      boolean getIsValue();

      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.ValueCase getValueCase();
    }
    /**
     * <pre>
     * Значение статуса устройства
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.DeviceState.Value}
     */
    public static final class Value extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.DeviceState.Value)
        ValueOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Value.newBuilder() to construct.
      private Value(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Value() {
        type_ = 0;
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_Value_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_Value_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Builder.class);
      }

      /**
       * <pre>
       * Тип значения статуса устройства
       * </pre>
       *
       * Protobuf enum {@code keyapis.iot_connect.v1.DeviceState.Value.Type}
       */
      public enum Type
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         * Значение не указано
         * </pre>
         *
         * <code>TYPE_UNKNOWN = 0;</code>
         */
        TYPE_UNKNOWN(0),
        /**
         * <pre>
         * Логический тип
         * </pre>
         *
         * <code>BOOL = 1;</code>
         */
        BOOL(1),
        UNRECOGNIZED(-1),
        ;

        /**
         * <pre>
         * Значение не указано
         * </pre>
         *
         * <code>TYPE_UNKNOWN = 0;</code>
         */
        public static final int TYPE_UNKNOWN_VALUE = 0;
        /**
         * <pre>
         * Логический тип
         * </pre>
         *
         * <code>BOOL = 1;</code>
         */
        public static final int BOOL_VALUE = 1;


        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 Type 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 Type forNumber(int value) {
          switch (value) {
            case 0: return TYPE_UNKNOWN;
            case 1: return BOOL;
            default: return null;
          }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<Type>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            Type> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
                public Type findValueByNumber(int number) {
                  return Type.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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.getDescriptor().getEnumTypes().get(0);
        }

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

        public static Type 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 Type(int value) {
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:keyapis.iot_connect.v1.DeviceState.Value.Type)
      }

      private int valueCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object value_;
      public enum ValueCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        IS_VALUE(2),
        VALUE_NOT_SET(0);
        private final int value;
        private ValueCase(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 ValueCase valueOf(int value) {
          return forNumber(value);
        }

        public static ValueCase forNumber(int value) {
          switch (value) {
            case 2: return IS_VALUE;
            case 0: return VALUE_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ValueCase
      getValueCase() {
        return ValueCase.forNumber(
            valueCase_);
      }

      public static final int TYPE_FIELD_NUMBER = 1;
      private int type_ = 0;
      /**
       * <pre>
       * Тип значения статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value.Type type = 1;</code>
       * @return The enum numeric value on the wire for type.
       */
      @java.lang.Override public int getTypeValue() {
        return type_;
      }
      /**
       * <pre>
       * Тип значения статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value.Type type = 1;</code>
       * @return The type.
       */
      @java.lang.Override public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type getType() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type.forNumber(type_);
        return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type.UNRECOGNIZED : result;
      }

      public static final int IS_VALUE_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Значение логического типа
       * </pre>
       *
       * <code>bool is_value = 2 [json_name = "bool_value"];</code>
       * @return Whether the isValue field is set.
       */
      @java.lang.Override
      public boolean hasIsValue() {
        return valueCase_ == 2;
      }
      /**
       * <pre>
       * Значение логического типа
       * </pre>
       *
       * <code>bool is_value = 2 [json_name = "bool_value"];</code>
       * @return The isValue.
       */
      @java.lang.Override
      public boolean getIsValue() {
        if (valueCase_ == 2) {
          return (java.lang.Boolean) value_;
        }
        return false;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (type_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type.TYPE_UNKNOWN.getNumber()) {
          output.writeEnum(1, type_);
        }
        if (valueCase_ == 2) {
          output.writeBool(
              2, (boolean)((java.lang.Boolean) value_));
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (type_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type.TYPE_UNKNOWN.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, type_);
        }
        if (valueCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(
                2, (boolean)((java.lang.Boolean) value_));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value)) {
          return super.equals(obj);
        }
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value) obj;

        if (type_ != other.type_) return false;
        if (!getValueCase().equals(other.getValueCase())) return false;
        switch (valueCase_) {
          case 2:
            if (getIsValue()
                != other.getIsValue()) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + type_;
        switch (valueCase_) {
          case 2:
            hash = (37 * hash) + IS_VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getIsValue());
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * Protobuf type {@code keyapis.iot_connect.v1.DeviceState.Value}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.DeviceState.Value)
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.ValueOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_Value_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_Value_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Builder.class);
        }

        // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          type_ = 0;
          valueCase_ = 0;
          value_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_Value_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value getDefaultInstanceForType() {
          return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value build() {
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value buildPartial() {
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.type_ = type_;
          }
        }

        private void buildPartialOneofs(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value result) {
          result.valueCase_ = valueCase_;
          result.value_ = this.value_;
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value) {
            return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value other) {
          if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.getDefaultInstance()) return this;
          if (other.type_ != 0) {
            setTypeValue(other.getTypeValue());
          }
          switch (other.getValueCase()) {
            case IS_VALUE: {
              setIsValue(other.getIsValue());
              break;
            }
            case VALUE_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          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 {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  type_ = input.readEnum();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  value_ = input.readBool();
                  valueCase_ = 2;
                  break;
                } // case 16
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int valueCase_ = 0;
        private java.lang.Object value_;
        public ValueCase
            getValueCase() {
          return ValueCase.forNumber(
              valueCase_);
        }

        public Builder clearValue() {
          valueCase_ = 0;
          value_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private int type_ = 0;
        /**
         * <pre>
         * Тип значения статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceState.Value.Type type = 1;</code>
         * @return The enum numeric value on the wire for type.
         */
        @java.lang.Override public int getTypeValue() {
          return type_;
        }
        /**
         * <pre>
         * Тип значения статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceState.Value.Type type = 1;</code>
         * @param value The enum numeric value on the wire for type to set.
         * @return This builder for chaining.
         */
        public Builder setTypeValue(int value) {
          type_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Тип значения статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceState.Value.Type type = 1;</code>
         * @return The type.
         */
        @java.lang.Override
        public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type getType() {
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type.forNumber(type_);
          return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type.UNRECOGNIZED : result;
        }
        /**
         * <pre>
         * Тип значения статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceState.Value.Type type = 1;</code>
         * @param value The type to set.
         * @return This builder for chaining.
         */
        public Builder setType(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Type value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          type_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Тип значения статуса устройства
         * </pre>
         *
         * <code>.keyapis.iot_connect.v1.DeviceState.Value.Type type = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = 0;
          onChanged();
          return this;
        }

        /**
         * <pre>
         * Значение логического типа
         * </pre>
         *
         * <code>bool is_value = 2 [json_name = "bool_value"];</code>
         * @return Whether the isValue field is set.
         */
        public boolean hasIsValue() {
          return valueCase_ == 2;
        }
        /**
         * <pre>
         * Значение логического типа
         * </pre>
         *
         * <code>bool is_value = 2 [json_name = "bool_value"];</code>
         * @return The isValue.
         */
        public boolean getIsValue() {
          if (valueCase_ == 2) {
            return (java.lang.Boolean) value_;
          }
          return false;
        }
        /**
         * <pre>
         * Значение логического типа
         * </pre>
         *
         * <code>bool is_value = 2 [json_name = "bool_value"];</code>
         * @param value The isValue to set.
         * @return This builder for chaining.
         */
        public Builder setIsValue(boolean value) {

          valueCase_ = 2;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Значение логического типа
         * </pre>
         *
         * <code>bool is_value = 2 [json_name = "bool_value"];</code>
         * @return This builder for chaining.
         */
        public Builder clearIsValue() {
          if (valueCase_ == 2) {
            valueCase_ = 0;
            value_ = null;
            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:keyapis.iot_connect.v1.DeviceState.Value)
      }

      // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.DeviceState.Value)
      private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value();
      }

      public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Value>
          PARSER = new com.google.protobuf.AbstractParser<Value>() {
        @java.lang.Override
        public Value parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

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

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

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int STATE_KEY_TYPE_FIELD_NUMBER = 1;
    private int stateKeyType_ = 0;
    /**
     * <pre>
     * Тип статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.KeyType state_key_type = 1 [json_name = "key"];</code>
     * @return The enum numeric value on the wire for stateKeyType.
     */
    @java.lang.Override public int getStateKeyTypeValue() {
      return stateKeyType_;
    }
    /**
     * <pre>
     * Тип статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.KeyType state_key_type = 1 [json_name = "key"];</code>
     * @return The stateKeyType.
     */
    @java.lang.Override public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType getStateKeyType() {
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType.forNumber(stateKeyType_);
      return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType.UNRECOGNIZED : result;
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value value_;
    /**
     * <pre>
     * Значение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return value_ != null;
    }
    /**
     * <pre>
     * Значение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value getValue() {
      return value_ == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.getDefaultInstance() : value_;
    }
    /**
     * <pre>
     * Значение статуса устройства
     * </pre>
     *
     * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.ValueOrBuilder getValueOrBuilder() {
      return value_ == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.getDefaultInstance() : value_;
    }

    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 (stateKeyType_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType.KEY_TYPE_UNKNOWN.getNumber()) {
        output.writeEnum(1, stateKeyType_);
      }
      if (value_ != null) {
        output.writeMessage(2, getValue());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (stateKeyType_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType.KEY_TYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, stateKeyType_);
      }
      if (value_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getValue());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState) obj;

      if (stateKeyType_ != other.stateKeyType_) return false;
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + STATE_KEY_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + stateKeyType_;
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Статус устройства
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.DeviceState}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.DeviceState)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        stateKeyType_ = 0;
        value_ = null;
        if (valueBuilder_ != null) {
          valueBuilder_.dispose();
          valueBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_DeviceState_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.stateKeyType_ = stateKeyType_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.value_ = valueBuilder_ == null
              ? value_
              : valueBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.getDefaultInstance()) return this;
        if (other.stateKeyType_ != 0) {
          setStateKeyTypeValue(other.getStateKeyTypeValue());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                stateKeyType_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getValueFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int stateKeyType_ = 0;
      /**
       * <pre>
       * Тип статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.KeyType state_key_type = 1 [json_name = "key"];</code>
       * @return The enum numeric value on the wire for stateKeyType.
       */
      @java.lang.Override public int getStateKeyTypeValue() {
        return stateKeyType_;
      }
      /**
       * <pre>
       * Тип статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.KeyType state_key_type = 1 [json_name = "key"];</code>
       * @param value The enum numeric value on the wire for stateKeyType to set.
       * @return This builder for chaining.
       */
      public Builder setStateKeyTypeValue(int value) {
        stateKeyType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.KeyType state_key_type = 1 [json_name = "key"];</code>
       * @return The stateKeyType.
       */
      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType getStateKeyType() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType result = ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType.forNumber(stateKeyType_);
        return result == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Тип статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.KeyType state_key_type = 1 [json_name = "key"];</code>
       * @param value The stateKeyType to set.
       * @return This builder for chaining.
       */
      public Builder setStateKeyType(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.KeyType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        stateKeyType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.KeyType state_key_type = 1 [json_name = "key"];</code>
       * @return This builder for chaining.
       */
      public Builder clearStateKeyType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        stateKeyType_ = 0;
        onChanged();
        return this;
      }

      private ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value value_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.ValueOrBuilder> valueBuilder_;
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
       * @return The value.
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value getValue() {
        if (valueBuilder_ == null) {
          return value_ == null ? ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.getDefaultInstance() : value_;
        } else {
          return valueBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
       */
      public Builder setValue(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
        } else {
          valueBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
       */
      public Builder setValue(
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Builder builderForValue) {
        if (valueBuilder_ == null) {
          value_ = builderForValue.build();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
       */
      public Builder mergeValue(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value value) {
        if (valueBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            value_ != null &&
            value_ != ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.getDefaultInstance()) {
            getValueBuilder().mergeFrom(value);
          } else {
            value_ = value;
          }
        } else {
          valueBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = null;
        if (valueBuilder_ != null) {
          valueBuilder_.dispose();
          valueBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Builder getValueBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getValueFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.ValueOrBuilder getValueOrBuilder() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          return value_ == null ?
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.getDefaultInstance() : value_;
        }
      }
      /**
       * <pre>
       * Значение статуса устройства
       * </pre>
       *
       * <code>.keyapis.iot_connect.v1.DeviceState.Value value = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.ValueOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.Value.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState.ValueOrBuilder>(
                  getValue(),
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }
      @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:keyapis.iot_connect.v1.DeviceState)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.DeviceState)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeviceState>
        PARSER = new com.google.protobuf.AbstractParser<DeviceState>() {
      @java.lang.Override
      public DeviceState parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceState getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetCallbackDevicesRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.GetCallbackDevicesRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Запрос метода получения устройств, доступных пользователю
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.GetCallbackDevicesRequest}
   */
  public static final class GetCallbackDevicesRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.GetCallbackDevicesRequest)
      GetCallbackDevicesRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetCallbackDevicesRequest.newBuilder() to construct.
    private GetCallbackDevicesRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetCallbackDevicesRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest.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 {
      getUnknownFields().writeTo(output);
    }

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest) obj;

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

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

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос метода получения устройств, доступных пользователю
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.GetCallbackDevicesRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.GetCallbackDevicesRequest)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        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:keyapis.iot_connect.v1.GetCallbackDevicesRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.GetCallbackDevicesRequest)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetCallbackDevicesRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetCallbackDevicesRequest>() {
      @java.lang.Override
      public GetCallbackDevicesRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetCallbackDevicesResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.GetCallbackDevicesResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device> 
        getDataList();
    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device getData(int index);
    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    int getDataCount();
    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    java.util.List<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder> 
        getDataOrBuilderList();
    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder getDataOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Ответ на запрос метода получения устройств, доступных пользователю
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.GetCallbackDevicesResponse}
   */
  public static final class GetCallbackDevicesResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.GetCallbackDevicesResponse)
      GetCallbackDevicesResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetCallbackDevicesResponse.newBuilder() to construct.
    private GetCallbackDevicesResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetCallbackDevicesResponse() {
      data_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device> data_;
    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device> getDataList() {
      return data_;
    }
    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder> 
        getDataOrBuilderList() {
      return data_;
    }
    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    @java.lang.Override
    public int getDataCount() {
      return data_.size();
    }
    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device getData(int index) {
      return data_.get(index);
    }
    /**
     * <pre>
     * Домофоны, доступные пользователю
     * </pre>
     *
     * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder getDataOrBuilder(
        int index) {
      return data_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getDataCount() > 0) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getDataList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос метода получения устройств, доступных пользователю
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.GetCallbackDevicesResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.GetCallbackDevicesResponse)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (dataBuilder_ == null) {
          data_ = java.util.Collections.emptyList();
        } else {
          data_ = null;
          dataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse result) {
        if (dataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            data_ = java.util.Collections.unmodifiableList(data_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse.getDefaultInstance()) return this;
        if (dataBuilder_ == null) {
          if (!other.data_.isEmpty()) {
            if (data_.isEmpty()) {
              data_ = other.data_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDataIsMutable();
              data_.addAll(other.data_);
            }
            onChanged();
          }
        } else {
          if (!other.data_.isEmpty()) {
            if (dataBuilder_.isEmpty()) {
              dataBuilder_.dispose();
              dataBuilder_ = null;
              data_ = other.data_;
              bitField0_ = (bitField0_ & ~0x00000001);
              dataBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDataFieldBuilder() : null;
            } else {
              dataBuilder_.addAllMessages(other.data_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device m =
                    input.readMessage(
                        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.parser(),
                        extensionRegistry);
                if (dataBuilder_ == null) {
                  ensureDataIsMutable();
                  data_.add(m);
                } else {
                  dataBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device> data_ =
        java.util.Collections.emptyList();
      private void ensureDataIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          data_ = new java.util.ArrayList<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device>(data_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder> dataBuilder_;

      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device> getDataList() {
        if (dataBuilder_ == null) {
          return java.util.Collections.unmodifiableList(data_);
        } else {
          return dataBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public int getDataCount() {
        if (dataBuilder_ == null) {
          return data_.size();
        } else {
          return dataBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device getData(int index) {
        if (dataBuilder_ == null) {
          return data_.get(index);
        } else {
          return dataBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public Builder setData(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataIsMutable();
          data_.set(index, value);
          onChanged();
        } else {
          dataBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public Builder setData(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder builderForValue) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.set(index, builderForValue.build());
          onChanged();
        } else {
          dataBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public Builder addData(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataIsMutable();
          data_.add(value);
          onChanged();
        } else {
          dataBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public Builder addData(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataIsMutable();
          data_.add(index, value);
          onChanged();
        } else {
          dataBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public Builder addData(
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder builderForValue) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.add(builderForValue.build());
          onChanged();
        } else {
          dataBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public Builder addData(
          int index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder builderForValue) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.add(index, builderForValue.build());
          onChanged();
        } else {
          dataBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public Builder addAllData(
          java.lang.Iterable<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device> values) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, data_);
          onChanged();
        } else {
          dataBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public Builder removeData(int index) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.remove(index);
          onChanged();
        } else {
          dataBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder getDataBuilder(
          int index) {
        return getDataFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder getDataOrBuilder(
          int index) {
        if (dataBuilder_ == null) {
          return data_.get(index);  } else {
          return dataBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public java.util.List<? extends ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder> 
           getDataOrBuilderList() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(data_);
        }
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder addDataBuilder() {
        return getDataFieldBuilder().addBuilder(
            ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.getDefaultInstance());
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder addDataBuilder(
          int index) {
        return getDataFieldBuilder().addBuilder(
            index, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.getDefaultInstance());
      }
      /**
       * <pre>
       * Домофоны, доступные пользователю
       * </pre>
       *
       * <code>repeated .keyapis.iot_connect.v1.Device data = 1;</code>
       */
      public java.util.List<ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder> 
           getDataBuilderList() {
        return getDataFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.Device.Builder, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceOrBuilder>(
                  data_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }
      @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:keyapis.iot_connect.v1.GetCallbackDevicesResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.GetCallbackDevicesResponse)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetCallbackDevicesResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetCallbackDevicesResponse>() {
      @java.lang.Override
      public GetCallbackDevicesResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.GetCallbackDevicesResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostCallbackQueryRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.PostCallbackQueryRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Массив идентификаторов домофонов пользователя
     * </pre>
     *
     * <code>repeated string devices = 1;</code>
     * @return A list containing the devices.
     */
    java.util.List<java.lang.String>
        getDevicesList();
    /**
     * <pre>
     * Массив идентификаторов домофонов пользователя
     * </pre>
     *
     * <code>repeated string devices = 1;</code>
     * @return The count of devices.
     */
    int getDevicesCount();
    /**
     * <pre>
     * Массив идентификаторов домофонов пользователя
     * </pre>
     *
     * <code>repeated string devices = 1;</code>
     * @param index The index of the element to return.
     * @return The devices at the given index.
     */
    java.lang.String getDevices(int index);
    /**
     * <pre>
     * Массив идентификаторов домофонов пользователя
     * </pre>
     *
     * <code>repeated string devices = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the devices at the given index.
     */
    com.google.protobuf.ByteString
        getDevicesBytes(int index);
  }
  /**
   * <pre>
   * Запрос статуса домофонов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackQueryRequest}
   */
  public static final class PostCallbackQueryRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.PostCallbackQueryRequest)
      PostCallbackQueryRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostCallbackQueryRequest.newBuilder() to construct.
    private PostCallbackQueryRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostCallbackQueryRequest() {
      devices_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest.Builder.class);
    }

    public static final int DEVICES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList devices_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Массив идентификаторов домофонов пользователя
     * </pre>
     *
     * <code>repeated string devices = 1;</code>
     * @return A list containing the devices.
     */
    public com.google.protobuf.ProtocolStringList
        getDevicesList() {
      return devices_;
    }
    /**
     * <pre>
     * Массив идентификаторов домофонов пользователя
     * </pre>
     *
     * <code>repeated string devices = 1;</code>
     * @return The count of devices.
     */
    public int getDevicesCount() {
      return devices_.size();
    }
    /**
     * <pre>
     * Массив идентификаторов домофонов пользователя
     * </pre>
     *
     * <code>repeated string devices = 1;</code>
     * @param index The index of the element to return.
     * @return The devices at the given index.
     */
    public java.lang.String getDevices(int index) {
      return devices_.get(index);
    }
    /**
     * <pre>
     * Массив идентификаторов домофонов пользователя
     * </pre>
     *
     * <code>repeated string devices = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the devices at the given index.
     */
    public com.google.protobuf.ByteString
        getDevicesBytes(int index) {
      return devices_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < devices_.size(); i++) {
          dataSize += computeStringSizeNoTag(devices_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDevicesList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getDevicesCount() > 0) {
        hash = (37 * hash) + DEVICES_FIELD_NUMBER;
        hash = (53 * hash) + getDevicesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос статуса домофонов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackQueryRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.PostCallbackQueryRequest)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        devices_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          devices_.makeImmutable();
          result.devices_ = devices_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest.getDefaultInstance()) return this;
        if (!other.devices_.isEmpty()) {
          if (devices_.isEmpty()) {
            devices_ = other.devices_;
            bitField0_ |= 0x00000001;
          } else {
            ensureDevicesIsMutable();
            devices_.addAll(other.devices_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureDevicesIsMutable();
                devices_.add(s);
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringArrayList devices_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureDevicesIsMutable() {
        if (!devices_.isModifiable()) {
          devices_ = new com.google.protobuf.LazyStringArrayList(devices_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * Массив идентификаторов домофонов пользователя
       * </pre>
       *
       * <code>repeated string devices = 1;</code>
       * @return A list containing the devices.
       */
      public com.google.protobuf.ProtocolStringList
          getDevicesList() {
        devices_.makeImmutable();
        return devices_;
      }
      /**
       * <pre>
       * Массив идентификаторов домофонов пользователя
       * </pre>
       *
       * <code>repeated string devices = 1;</code>
       * @return The count of devices.
       */
      public int getDevicesCount() {
        return devices_.size();
      }
      /**
       * <pre>
       * Массив идентификаторов домофонов пользователя
       * </pre>
       *
       * <code>repeated string devices = 1;</code>
       * @param index The index of the element to return.
       * @return The devices at the given index.
       */
      public java.lang.String getDevices(int index) {
        return devices_.get(index);
      }
      /**
       * <pre>
       * Массив идентификаторов домофонов пользователя
       * </pre>
       *
       * <code>repeated string devices = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the devices at the given index.
       */
      public com.google.protobuf.ByteString
          getDevicesBytes(int index) {
        return devices_.getByteString(index);
      }
      /**
       * <pre>
       * Массив идентификаторов домофонов пользователя
       * </pre>
       *
       * <code>repeated string devices = 1;</code>
       * @param index The index to set the value at.
       * @param value The devices to set.
       * @return This builder for chaining.
       */
      public Builder setDevices(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureDevicesIsMutable();
        devices_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Массив идентификаторов домофонов пользователя
       * </pre>
       *
       * <code>repeated string devices = 1;</code>
       * @param value The devices to add.
       * @return This builder for chaining.
       */
      public Builder addDevices(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureDevicesIsMutable();
        devices_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Массив идентификаторов домофонов пользователя
       * </pre>
       *
       * <code>repeated string devices = 1;</code>
       * @param values The devices to add.
       * @return This builder for chaining.
       */
      public Builder addAllDevices(
          java.lang.Iterable<java.lang.String> values) {
        ensureDevicesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, devices_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Массив идентификаторов домофонов пользователя
       * </pre>
       *
       * <code>repeated string devices = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDevices() {
        devices_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Массив идентификаторов домофонов пользователя
       * </pre>
       *
       * <code>repeated string devices = 1;</code>
       * @param value The bytes of the devices to add.
       * @return This builder for chaining.
       */
      public Builder addDevicesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureDevicesIsMutable();
        devices_.add(value);
        bitField0_ |= 0x00000001;
        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:keyapis.iot_connect.v1.PostCallbackQueryRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.PostCallbackQueryRequest)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostCallbackQueryRequest>
        PARSER = new com.google.protobuf.AbstractParser<PostCallbackQueryRequest>() {
      @java.lang.Override
      public PostCallbackQueryRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostCallbackQueryResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.PostCallbackQueryResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
     */
    int getDataCount();
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
     */
    boolean containsData(
        java.lang.String key);
    /**
     * Use {@link #getDataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray>
    getData();
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
     */
    java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray>
    getDataMap();
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
     */
    /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray getDataOrDefault(
        java.lang.String key,
        /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray defaultValue);
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray getDataOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * Ответ на запрос статуса домофонов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackQueryResponse}
   */
  public static final class PostCallbackQueryResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.PostCallbackQueryResponse)
      PostCallbackQueryResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostCallbackQueryResponse.newBuilder() to construct.
    private PostCallbackQueryResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostCallbackQueryResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetData();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private static final class DataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray>newDefaultInstance(
                  ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_DataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> data_;
    private com.google.protobuf.MapField<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray>
    internalGetData() {
      if (data_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DataDefaultEntryHolder.defaultEntry);
      }
      return data_;
    }
    public int getDataCount() {
      return internalGetData().getMap().size();
    }
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
     */
    @java.lang.Override
    public boolean containsData(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetData().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDataMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> getData() {
      return getDataMap();
    }
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> getDataMap() {
      return internalGetData().getMap();
    }
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
     */
    @java.lang.Override
    public /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray getDataOrDefault(
        java.lang.String key,
        /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> map =
          internalGetData().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray getDataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> map =
          internalGetData().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetData(),
          DataDefaultEntryHolder.defaultEntry,
          1);
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (java.util.Map.Entry<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> entry
           : internalGetData().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray>
        data__ = DataDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, data__);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse) obj;

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

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

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос статуса домофонов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackQueryResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.PostCallbackQueryResponse)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetData();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableData();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableData().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.data_ = internalGetData();
          result.data_.makeImmutable();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse.getDefaultInstance()) return this;
        internalGetMutableData().mergeFrom(
            other.internalGetData());
        bitField0_ |= 0x00000001;
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray>
                data__ = input.readMessage(
                    DataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableData().getMutableMap().put(
                    data__.getKey(), data__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> data_;
      private com.google.protobuf.MapField<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray>
          internalGetData() {
        if (data_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              DataDefaultEntryHolder.defaultEntry);
        }
        return data_;
      }
      private com.google.protobuf.MapField<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray>
          internalGetMutableData() {
        if (data_ == null) {
          data_ = com.google.protobuf.MapField.newMapField(
              DataDefaultEntryHolder.defaultEntry);
        }
        if (!data_.isMutable()) {
          data_ = data_.copy();
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return data_;
      }
      public int getDataCount() {
        return internalGetData().getMap().size();
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
       */
      @java.lang.Override
      public boolean containsData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetData().getMap().containsKey(key);
      }
      /**
       * Use {@link #getDataMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> getData() {
        return getDataMap();
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> getDataMap() {
        return internalGetData().getMap();
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
       */
      @java.lang.Override
      public /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray getDataOrDefault(
          java.lang.String key,
          /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> map =
            internalGetData().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
       */
      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray getDataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> map =
            internalGetData().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableData().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
       */
      public Builder removeData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableData().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray>
          getMutableData() {
        bitField0_ |= 0x00000001;
        return internalGetMutableData().getMutableMap();
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
       */
      public Builder putData(
          java.lang.String key,
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableData().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceStateArray&gt; data = 1 [json_name = "devices"];</code>
       */
      public Builder putAllData(
          java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceStateArray> values) {
        internalGetMutableData().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        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:keyapis.iot_connect.v1.PostCallbackQueryResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.PostCallbackQueryResponse)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostCallbackQueryResponse>
        PARSER = new com.google.protobuf.AbstractParser<PostCallbackQueryResponse>() {
      @java.lang.Override
      public PostCallbackQueryResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackQueryResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostCallbackCommandRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.PostCallbackCommandRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
     */
    int getDevicesCount();
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
     */
    boolean containsDevices(
        java.lang.String key);
    /**
     * Use {@link #getDevicesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray>
    getDevices();
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
     */
    java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray>
    getDevicesMap();
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
     */
    /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray getDevicesOrDefault(
        java.lang.String key,
        /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray defaultValue);
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
     */
    ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray getDevicesOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * Запрос на изменение статуса домофона
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackCommandRequest}
   */
  public static final class PostCallbackCommandRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.PostCallbackCommandRequest)
      PostCallbackCommandRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostCallbackCommandRequest.newBuilder() to construct.
    private PostCallbackCommandRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostCallbackCommandRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetDevices();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest.Builder.class);
    }

    public static final int DEVICES_FIELD_NUMBER = 1;
    private static final class DevicesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray>newDefaultInstance(
                  ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_DevicesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> devices_;
    private com.google.protobuf.MapField<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray>
    internalGetDevices() {
      if (devices_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DevicesDefaultEntryHolder.defaultEntry);
      }
      return devices_;
    }
    public int getDevicesCount() {
      return internalGetDevices().getMap().size();
    }
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
     */
    @java.lang.Override
    public boolean containsDevices(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetDevices().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDevicesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> getDevices() {
      return getDevicesMap();
    }
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> getDevicesMap() {
      return internalGetDevices().getMap();
    }
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray getDevicesOrDefault(
        java.lang.String key,
        /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> map =
          internalGetDevices().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Массив домофонов со статусами
     * </pre>
     *
     * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray getDevicesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> map =
          internalGetDevices().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetDevices(),
          DevicesDefaultEntryHolder.defaultEntry,
          1);
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (java.util.Map.Entry<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> entry
           : internalGetDevices().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray>
        devices__ = DevicesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, devices__);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest) obj;

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

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

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос на изменение статуса домофона
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackCommandRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.PostCallbackCommandRequest)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetDevices();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableDevices();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableDevices().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.devices_ = internalGetDevices();
          result.devices_.makeImmutable();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest.getDefaultInstance()) return this;
        internalGetMutableDevices().mergeFrom(
            other.internalGetDevices());
        bitField0_ |= 0x00000001;
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray>
                devices__ = input.readMessage(
                    DevicesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableDevices().getMutableMap().put(
                    devices__.getKey(), devices__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> devices_;
      private com.google.protobuf.MapField<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray>
          internalGetDevices() {
        if (devices_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              DevicesDefaultEntryHolder.defaultEntry);
        }
        return devices_;
      }
      private com.google.protobuf.MapField<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray>
          internalGetMutableDevices() {
        if (devices_ == null) {
          devices_ = com.google.protobuf.MapField.newMapField(
              DevicesDefaultEntryHolder.defaultEntry);
        }
        if (!devices_.isMutable()) {
          devices_ = devices_.copy();
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return devices_;
      }
      public int getDevicesCount() {
        return internalGetDevices().getMap().size();
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
       */
      @java.lang.Override
      public boolean containsDevices(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetDevices().getMap().containsKey(key);
      }
      /**
       * Use {@link #getDevicesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> getDevices() {
        return getDevicesMap();
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> getDevicesMap() {
        return internalGetDevices().getMap();
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray getDevicesOrDefault(
          java.lang.String key,
          /* nullable */
ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> map =
            internalGetDevices().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray getDevicesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> map =
            internalGetDevices().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearDevices() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableDevices().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
       */
      public Builder removeDevices(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableDevices().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray>
          getMutableDevices() {
        bitField0_ |= 0x00000001;
        return internalGetMutableDevices().getMutableMap();
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
       */
      public Builder putDevices(
          java.lang.String key,
          ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableDevices().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Массив домофонов со статусами
       * </pre>
       *
       * <code>map&lt;string, .keyapis.iot_connect.v1.DeviceCommandArray&gt; devices = 1;</code>
       */
      public Builder putAllDevices(
          java.util.Map<java.lang.String, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.DeviceCommandArray> values) {
        internalGetMutableDevices().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        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:keyapis.iot_connect.v1.PostCallbackCommandRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.PostCallbackCommandRequest)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostCallbackCommandRequest>
        PARSER = new com.google.protobuf.AbstractParser<PostCallbackCommandRequest>() {
      @java.lang.Override
      public PostCallbackCommandRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostCallbackCommandResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.PostCallbackCommandResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Ответ на запрос на изменение статуса домофона
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackCommandResponse}
   */
  public static final class PostCallbackCommandResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.PostCallbackCommandResponse)
      PostCallbackCommandResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostCallbackCommandResponse.newBuilder() to construct.
    private PostCallbackCommandResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostCallbackCommandResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse.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 {
      getUnknownFields().writeTo(output);
    }

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse) obj;

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

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

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос на изменение статуса домофона
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackCommandResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.PostCallbackCommandResponse)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        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:keyapis.iot_connect.v1.PostCallbackCommandResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.PostCallbackCommandResponse)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostCallbackCommandResponse>
        PARSER = new com.google.protobuf.AbstractParser<PostCallbackCommandResponse>() {
      @java.lang.Override
      public PostCallbackCommandResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackCommandResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostCallbackUnlinkRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.PostCallbackUnlinkRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Запрос метода разъединения аккаунтов
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackUnlinkRequest}
   */
  public static final class PostCallbackUnlinkRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.PostCallbackUnlinkRequest)
      PostCallbackUnlinkRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostCallbackUnlinkRequest.newBuilder() to construct.
    private PostCallbackUnlinkRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostCallbackUnlinkRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest.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 {
      getUnknownFields().writeTo(output);
    }

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest) obj;

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

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

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос метода разъединения аккаунтов
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackUnlinkRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.PostCallbackUnlinkRequest)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        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:keyapis.iot_connect.v1.PostCallbackUnlinkRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.PostCallbackUnlinkRequest)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostCallbackUnlinkRequest>
        PARSER = new com.google.protobuf.AbstractParser<PostCallbackUnlinkRequest>() {
      @java.lang.Override
      public PostCallbackUnlinkRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostCallbackUnlinkResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.iot_connect.v1.PostCallbackUnlinkResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Ответ на запрос метода разъединения аккаунтов
   * </pre>
   *
   * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackUnlinkResponse}
   */
  public static final class PostCallbackUnlinkResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.iot_connect.v1.PostCallbackUnlinkResponse)
      PostCallbackUnlinkResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostCallbackUnlinkResponse.newBuilder() to construct.
    private PostCallbackUnlinkResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostCallbackUnlinkResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse.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 {
      getUnknownFields().writeTo(output);
    }

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse other = (ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse) obj;

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

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

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse 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 ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse 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(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос метода разъединения аккаунтов
     * </pre>
     *
     * Protobuf type {@code keyapis.iot_connect.v1.PostCallbackUnlinkResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.iot_connect.v1.PostCallbackUnlinkResponse)
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse.class, ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse.Builder.class);
      }

      // Construct using ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse getDefaultInstanceForType() {
        return ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse build() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse buildPartial() {
        ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse result = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse) {
          return mergeFrom((ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse other) {
        if (other == ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        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:keyapis.iot_connect.v1.PostCallbackUnlinkResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.iot_connect.v1.PostCallbackUnlinkResponse)
    private static final ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse();
    }

    public static ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostCallbackUnlinkResponse>
        PARSER = new com.google.protobuf.AbstractParser<PostCallbackUnlinkResponse>() {
      @java.lang.Override
      public PostCallbackUnlinkResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public ru.keyapis.iot_connect.v1.KeyapisIotConnectV1Proto.PostCallbackUnlinkResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_Model_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_Model_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_Device_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_Device_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_DeviceStateArray_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_DeviceStateArray_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_DeviceCommandArray_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_DeviceCommandArray_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_DeviceCommand_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_DeviceCommand_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_DeviceState_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_DeviceState_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_DeviceState_Value_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_DeviceState_Value_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_DataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_DataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_DevicesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_DevicesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_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<keyapis/iot_connect/v1/keyapis_iot_con" +
      "nect_callback_v1.proto\022\026keyapis.iot_conn" +
      "ect.v1\032\037google/protobuf/timestamp.proto\032" +
      "\034google/api/annotations.proto\032\037google/ap" +
      "i/field_behavior.proto\032\036google/protobuf/" +
      "wrappers.proto\"\030\n\026GetCallbackUserRequest" +
      "\"0\n\027GetCallbackUserResponse\022\025\n\004data\030\001 \001(" +
      "\005R\007user_id\"\270\002\n\005Model\022\n\n\002id\030\001 \001(\t\022\024\n\014manu" +
      "facturer\030\002 \001(\t\022\r\n\005model\030\003 \001(\t\022\022\n\nhw_vers" +
      "ion\030\004 \001(\t\022\022\n\nsw_version\030\005 \001(\t\022\023\n\013descrip" +
      "tion\030\006 \001(\t\022\020\n\010category\030\007 \001(\t\022J\n\rfeature_" +
      "types\030\010 \003(\0162).keyapis.iot_connect.v1.Mod" +
      "el.FeatureTypeR\010features\"c\n\013FeatureType\022" +
      "\030\n\024FEATURE_TYPE_UNKNOWN\020\000\022\021\n\rINCOMING_CA" +
      "LL\020\001\022\n\n\006ONLINE\020\002\022\017\n\013REJECT_CALL\020\003\022\n\n\006UNL" +
      "OCK\020\004\"\252\001\n\006Device\022\n\n\002id\030\001 \001(\t\022\014\n\004name\030\002 \001" +
      "(\t\022\024\n\014default_name\030\003 \001(\t\022\014\n\004home\030\004 \001(\t\022\014" +
      "\n\004room\030\005 \001(\t\022,\n\005model\030\006 \001(\0132\035.keyapis.io" +
      "t_connect.v1.Model\022\022\n\nhw_version\030\007 \001(\t\022\022" +
      "\n\nsw_version\030\010 \001(\t\"G\n\020DeviceStateArray\0223" +
      "\n\006states\030\001 \003(\0132#.keyapis.iot_connect.v1." +
      "DeviceState\"K\n\022DeviceCommandArray\0225\n\006sta" +
      "tes\030\001 \003(\0132%.keyapis.iot_connect.v1.Devic" +
      "eCommand\"\366\003\n\rDeviceCommand\022L\n\020command_ke" +
      "y_type\030\001 \001(\0162-.keyapis.iot_connect.v1.De" +
      "viceCommand.KeyTypeR\003key\022:\n\005value\030\002 \001(\0132" +
      "+.keyapis.iot_connect.v1.DeviceCommand.V" +
      "alue\032\234\002\n\005Value\022>\n\004type\030\001 \001(\01620.keyapis.i" +
      "ot_connect.v1.DeviceCommand.Value.Type\022`" +
      "\n\017value_enum_type\030\002 \001(\01629.keyapis.iot_co" +
      "nnect.v1.DeviceCommand.Value.ValueEnumTy" +
      "peH\000R\nenum_value\"\"\n\004Type\022\020\n\014TYPE_UNKNOWN" +
      "\020\000\022\010\n\004ENUM\020\001\"D\n\rValueEnumType\022\033\n\027VALUE_E" +
      "NUM_TYPE_UNKNOWN\020\000\022\n\n\006REJECT\020\001\022\n\n\006UNLOCK" +
      "\020\002B\007\n\005value\"<\n\007KeyType\022\024\n\020KEY_TYPE_UNKNO" +
      "WN\020\000\022\017\n\013REJECT_CALL\020\001\022\n\n\006UNLOCK\020\002\"\323\002\n\013De" +
      "viceState\022H\n\016state_key_type\030\001 \001(\0162+.keya" +
      "pis.iot_connect.v1.DeviceState.KeyTypeR\003" +
      "key\0228\n\005value\030\002 \001(\0132).keyapis.iot_connect" +
      ".v1.DeviceState.Value\032\222\001\n\005Value\022<\n\004type\030" +
      "\001 \001(\0162..keyapis.iot_connect.v1.DeviceSta" +
      "te.Value.Type\022\036\n\010is_value\030\002 \001(\010H\000R\nbool_" +
      "value\"\"\n\004Type\022\020\n\014TYPE_UNKNOWN\020\000\022\010\n\004BOOL\020" +
      "\001B\007\n\005value\"+\n\007KeyType\022\024\n\020KEY_TYPE_UNKNOW" +
      "N\020\000\022\n\n\006ONLINE\020\001\"\033\n\031GetCallbackDevicesReq" +
      "uest\"J\n\032GetCallbackDevicesResponse\022,\n\004da" +
      "ta\030\001 \003(\0132\036.keyapis.iot_connect.v1.Device" +
      "\"+\n\030PostCallbackQueryRequest\022\017\n\007devices\030" +
      "\001 \003(\t\"\306\001\n\031PostCallbackQueryResponse\022R\n\004d" +
      "ata\030\001 \003(\0132;.keyapis.iot_connect.v1.PostC" +
      "allbackQueryResponse.DataEntryR\007devices\032" +
      "U\n\tDataEntry\022\013\n\003key\030\001 \001(\t\0227\n\005value\030\002 \001(\013" +
      "2(.keyapis.iot_connect.v1.DeviceStateArr" +
      "ay:\0028\001\"\312\001\n\032PostCallbackCommandRequest\022P\n" +
      "\007devices\030\001 \003(\0132?.keyapis.iot_connect.v1." +
      "PostCallbackCommandRequest.DevicesEntry\032" +
      "Z\n\014DevicesEntry\022\013\n\003key\030\001 \001(\t\0229\n\005value\030\002 " +
      "\001(\0132*.keyapis.iot_connect.v1.DeviceComma" +
      "ndArray:\0028\001\"\035\n\033PostCallbackCommandRespon" +
      "se\"\033\n\031PostCallbackUnlinkRequest\"\034\n\032PostC" +
      "allbackUnlinkResponse2\353\006\n\031IotConnectCall" +
      "backService\022\235\001\n\017GetCallbackUser\022..keyapi" +
      "s.iot_connect.v1.GetCallbackUserRequest\032" +
      "/.keyapis.iot_connect.v1.GetCallbackUser" +
      "Response\")\202\323\344\223\002#\022!/iot_connect/api/v1/ca" +
      "llback/user\022\250\001\n\022PostCallbackUnlink\0221.key" +
      "apis.iot_connect.v1.PostCallbackUnlinkRe" +
      "quest\0322.keyapis.iot_connect.v1.PostCallb" +
      "ackUnlinkResponse\"+\202\323\344\223\002%\"#/iot_connect/" +
      "api/v1/callback/unlink\022\251\001\n\022GetCallbackDe" +
      "vices\0221.keyapis.iot_connect.v1.GetCallba" +
      "ckDevicesRequest\0322.keyapis.iot_connect.v" +
      "1.GetCallbackDevicesResponse\",\202\323\344\223\002&\022$/i" +
      "ot_connect/api/v1/callback/devices\022\247\001\n\021P" +
      "ostCallbackQuery\0220.keyapis.iot_connect.v" +
      "1.PostCallbackQueryRequest\0321.keyapis.iot" +
      "_connect.v1.PostCallbackQueryResponse\"-\202" +
      "\323\344\223\002\'\"\"/iot_connect/api/v1/callback/quer" +
      "y:\001*\022\254\001\n\023PostCallbackCommand\0222.keyapis.i" +
      "ot_connect.v1.PostCallbackCommandRequest" +
      "\0323.keyapis.iot_connect.v1.PostCallbackCo" +
      "mmandResponse\",\202\323\344\223\002&\"$/iot_connect/api/" +
      "v1/callback/commandB\270\001\n\031ru.keyapis.iot_c" +
      "onnect.v1B\030KeyapisIotConnectV1ProtoH\003P\000Z" +
      "\027/keyapis_iot_connect_v1\330\001\001\370\001\001\242\002\023KEYAPIS" +
      "IOTCONNECTV1\252\002\025Keyapis.IotConnect.V1\312\002\025K" +
      "eyapis\\IotConnect\\V1\352\002\027Keyapis::IotConne" +
      "ct::V1b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.TimestampProto.getDescriptor(),
          com.google.api.AnnotationsProto.getDescriptor(),
          com.google.api.FieldBehaviorProto.getDescriptor(),
          com.google.protobuf.WrappersProto.getDescriptor(),
        });
    internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_GetCallbackUserRequest_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_GetCallbackUserResponse_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_keyapis_iot_connect_v1_Model_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_keyapis_iot_connect_v1_Model_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_Model_descriptor,
        new java.lang.String[] { "Id", "Manufacturer", "Model", "HwVersion", "SwVersion", "Description", "Category", "FeatureTypes", });
    internal_static_keyapis_iot_connect_v1_Device_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_keyapis_iot_connect_v1_Device_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_Device_descriptor,
        new java.lang.String[] { "Id", "Name", "DefaultName", "Home", "Room", "Model", "HwVersion", "SwVersion", });
    internal_static_keyapis_iot_connect_v1_DeviceStateArray_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_keyapis_iot_connect_v1_DeviceStateArray_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_DeviceStateArray_descriptor,
        new java.lang.String[] { "States", });
    internal_static_keyapis_iot_connect_v1_DeviceCommandArray_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_keyapis_iot_connect_v1_DeviceCommandArray_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_DeviceCommandArray_descriptor,
        new java.lang.String[] { "States", });
    internal_static_keyapis_iot_connect_v1_DeviceCommand_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_keyapis_iot_connect_v1_DeviceCommand_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_DeviceCommand_descriptor,
        new java.lang.String[] { "CommandKeyType", "Value", });
    internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_descriptor =
      internal_static_keyapis_iot_connect_v1_DeviceCommand_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_DeviceCommand_Value_descriptor,
        new java.lang.String[] { "Type", "ValueEnumType", "Value", });
    internal_static_keyapis_iot_connect_v1_DeviceState_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_keyapis_iot_connect_v1_DeviceState_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_DeviceState_descriptor,
        new java.lang.String[] { "StateKeyType", "Value", });
    internal_static_keyapis_iot_connect_v1_DeviceState_Value_descriptor =
      internal_static_keyapis_iot_connect_v1_DeviceState_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_iot_connect_v1_DeviceState_Value_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_DeviceState_Value_descriptor,
        new java.lang.String[] { "Type", "IsValue", "Value", });
    internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_GetCallbackDevicesRequest_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_GetCallbackDevicesResponse_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_PostCallbackQueryRequest_descriptor,
        new java.lang.String[] { "Devices", });
    internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_DataEntry_descriptor =
      internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_DataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_PostCallbackQueryResponse_DataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_descriptor,
        new java.lang.String[] { "Devices", });
    internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_DevicesEntry_descriptor =
      internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_DevicesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_PostCallbackCommandRequest_DevicesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_PostCallbackCommandResponse_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkRequest_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_iot_connect_v1_PostCallbackUnlinkResponse_descriptor,
        new java.lang.String[] { });
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(com.google.api.AnnotationsProto.http);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    com.google.protobuf.TimestampProto.getDescriptor();
    com.google.api.AnnotationsProto.getDescriptor();
    com.google.api.FieldBehaviorProto.getDescriptor();
    com.google.protobuf.WrappersProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
