// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: deviceapis/device/v1/deviceapis_device_relay_v1.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>

#include "google/protobuf/port_def.inc"
#if PROTOBUF_VERSION < 4023000
#error "This file was generated by a newer version of protoc which is"
#error "incompatible with your Protocol Buffer headers. Please update"
#error "your headers."
#endif  // PROTOBUF_VERSION

#if 4023001 < PROTOBUF_MIN_PROTOC_VERSION
#error "This file was generated by an older version of protoc which is"
#error "incompatible with your Protocol Buffer headers. Please"
#error "regenerate this file with a newer version of protoc."
#endif  // PROTOBUF_MIN_PROTOC_VERSION
#include "google/protobuf/port_undef.inc"
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/generated_enum_util.h"
#include "google/api/annotations.pb.h"
#include "google/api/field_behavior.pb.h"
#include "google/protobuf/field_mask.pb.h"
#include "deviceapis/device/v1/deviceapis_device_common_v1.pb.h"
#include "protoc-gen-openapiv2/options/annotations.pb.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto

PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto {
  static const ::uint32_t offsets[];
};
namespace deviceapis {
namespace device {
namespace v1 {
class EditRelayPropsDtmfRequest;
struct EditRelayPropsDtmfRequestDefaultTypeInternal;
extern EditRelayPropsDtmfRequestDefaultTypeInternal _EditRelayPropsDtmfRequest_default_instance_;
class EditRelayPropsDtmfResponse;
struct EditRelayPropsDtmfResponseDefaultTypeInternal;
extern EditRelayPropsDtmfResponseDefaultTypeInternal _EditRelayPropsDtmfResponse_default_instance_;
class EditRelayPropsDtmfResponse_Error;
struct EditRelayPropsDtmfResponse_ErrorDefaultTypeInternal;
extern EditRelayPropsDtmfResponse_ErrorDefaultTypeInternal _EditRelayPropsDtmfResponse_Error_default_instance_;
class EditRelayPropsOpenRequest;
struct EditRelayPropsOpenRequestDefaultTypeInternal;
extern EditRelayPropsOpenRequestDefaultTypeInternal _EditRelayPropsOpenRequest_default_instance_;
class EditRelayPropsOpenResponse;
struct EditRelayPropsOpenResponseDefaultTypeInternal;
extern EditRelayPropsOpenResponseDefaultTypeInternal _EditRelayPropsOpenResponse_default_instance_;
class EditRelayPropsOpenResponse_Error;
struct EditRelayPropsOpenResponse_ErrorDefaultTypeInternal;
extern EditRelayPropsOpenResponse_ErrorDefaultTypeInternal _EditRelayPropsOpenResponse_Error_default_instance_;
class GetRelayDtmfListRequest;
struct GetRelayDtmfListRequestDefaultTypeInternal;
extern GetRelayDtmfListRequestDefaultTypeInternal _GetRelayDtmfListRequest_default_instance_;
class GetRelayDtmfListResponse;
struct GetRelayDtmfListResponseDefaultTypeInternal;
extern GetRelayDtmfListResponseDefaultTypeInternal _GetRelayDtmfListResponse_default_instance_;
class GetRelayOpenListRequest;
struct GetRelayOpenListRequestDefaultTypeInternal;
extern GetRelayOpenListRequestDefaultTypeInternal _GetRelayOpenListRequest_default_instance_;
class GetRelayOpenListResponse;
struct GetRelayOpenListResponseDefaultTypeInternal;
extern GetRelayOpenListResponseDefaultTypeInternal _GetRelayOpenListResponse_default_instance_;
class GetRelayStatusListRequest;
struct GetRelayStatusListRequestDefaultTypeInternal;
extern GetRelayStatusListRequestDefaultTypeInternal _GetRelayStatusListRequest_default_instance_;
class GetRelayStatusListResponse;
struct GetRelayStatusListResponseDefaultTypeInternal;
extern GetRelayStatusListResponseDefaultTypeInternal _GetRelayStatusListResponse_default_instance_;
class PostRelayCloseRequest;
struct PostRelayCloseRequestDefaultTypeInternal;
extern PostRelayCloseRequestDefaultTypeInternal _PostRelayCloseRequest_default_instance_;
class PostRelayCloseResponse;
struct PostRelayCloseResponseDefaultTypeInternal;
extern PostRelayCloseResponseDefaultTypeInternal _PostRelayCloseResponse_default_instance_;
class PostRelayCloseResponse_Error;
struct PostRelayCloseResponse_ErrorDefaultTypeInternal;
extern PostRelayCloseResponse_ErrorDefaultTypeInternal _PostRelayCloseResponse_Error_default_instance_;
class PostRelayOpenPermanentlyRequest;
struct PostRelayOpenPermanentlyRequestDefaultTypeInternal;
extern PostRelayOpenPermanentlyRequestDefaultTypeInternal _PostRelayOpenPermanentlyRequest_default_instance_;
class PostRelayOpenPermanentlyResponse;
struct PostRelayOpenPermanentlyResponseDefaultTypeInternal;
extern PostRelayOpenPermanentlyResponseDefaultTypeInternal _PostRelayOpenPermanentlyResponse_default_instance_;
class PostRelayOpenPermanentlyResponse_Error;
struct PostRelayOpenPermanentlyResponse_ErrorDefaultTypeInternal;
extern PostRelayOpenPermanentlyResponse_ErrorDefaultTypeInternal _PostRelayOpenPermanentlyResponse_Error_default_instance_;
class PostRelayOpenRequest;
struct PostRelayOpenRequestDefaultTypeInternal;
extern PostRelayOpenRequestDefaultTypeInternal _PostRelayOpenRequest_default_instance_;
class PostRelayOpenResponse;
struct PostRelayOpenResponseDefaultTypeInternal;
extern PostRelayOpenResponseDefaultTypeInternal _PostRelayOpenResponse_default_instance_;
class PostRelayOpenResponse_Error;
struct PostRelayOpenResponse_ErrorDefaultTypeInternal;
extern PostRelayOpenResponse_ErrorDefaultTypeInternal _PostRelayOpenResponse_Error_default_instance_;
class RelayDtmf;
struct RelayDtmfDefaultTypeInternal;
extern RelayDtmfDefaultTypeInternal _RelayDtmf_default_instance_;
class RelayOpen;
struct RelayOpenDefaultTypeInternal;
extern RelayOpenDefaultTypeInternal _RelayOpen_default_instance_;
class RelayState;
struct RelayStateDefaultTypeInternal;
extern RelayStateDefaultTypeInternal _RelayState_default_instance_;
}  // namespace v1
}  // namespace device
}  // namespace deviceapis
PROTOBUF_NAMESPACE_OPEN
template <>
::deviceapis::device::v1::EditRelayPropsDtmfRequest* Arena::CreateMaybeMessage<::deviceapis::device::v1::EditRelayPropsDtmfRequest>(Arena*);
template <>
::deviceapis::device::v1::EditRelayPropsDtmfResponse* Arena::CreateMaybeMessage<::deviceapis::device::v1::EditRelayPropsDtmfResponse>(Arena*);
template <>
::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* Arena::CreateMaybeMessage<::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error>(Arena*);
template <>
::deviceapis::device::v1::EditRelayPropsOpenRequest* Arena::CreateMaybeMessage<::deviceapis::device::v1::EditRelayPropsOpenRequest>(Arena*);
template <>
::deviceapis::device::v1::EditRelayPropsOpenResponse* Arena::CreateMaybeMessage<::deviceapis::device::v1::EditRelayPropsOpenResponse>(Arena*);
template <>
::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* Arena::CreateMaybeMessage<::deviceapis::device::v1::EditRelayPropsOpenResponse_Error>(Arena*);
template <>
::deviceapis::device::v1::GetRelayDtmfListRequest* Arena::CreateMaybeMessage<::deviceapis::device::v1::GetRelayDtmfListRequest>(Arena*);
template <>
::deviceapis::device::v1::GetRelayDtmfListResponse* Arena::CreateMaybeMessage<::deviceapis::device::v1::GetRelayDtmfListResponse>(Arena*);
template <>
::deviceapis::device::v1::GetRelayOpenListRequest* Arena::CreateMaybeMessage<::deviceapis::device::v1::GetRelayOpenListRequest>(Arena*);
template <>
::deviceapis::device::v1::GetRelayOpenListResponse* Arena::CreateMaybeMessage<::deviceapis::device::v1::GetRelayOpenListResponse>(Arena*);
template <>
::deviceapis::device::v1::GetRelayStatusListRequest* Arena::CreateMaybeMessage<::deviceapis::device::v1::GetRelayStatusListRequest>(Arena*);
template <>
::deviceapis::device::v1::GetRelayStatusListResponse* Arena::CreateMaybeMessage<::deviceapis::device::v1::GetRelayStatusListResponse>(Arena*);
template <>
::deviceapis::device::v1::PostRelayCloseRequest* Arena::CreateMaybeMessage<::deviceapis::device::v1::PostRelayCloseRequest>(Arena*);
template <>
::deviceapis::device::v1::PostRelayCloseResponse* Arena::CreateMaybeMessage<::deviceapis::device::v1::PostRelayCloseResponse>(Arena*);
template <>
::deviceapis::device::v1::PostRelayCloseResponse_Error* Arena::CreateMaybeMessage<::deviceapis::device::v1::PostRelayCloseResponse_Error>(Arena*);
template <>
::deviceapis::device::v1::PostRelayOpenPermanentlyRequest* Arena::CreateMaybeMessage<::deviceapis::device::v1::PostRelayOpenPermanentlyRequest>(Arena*);
template <>
::deviceapis::device::v1::PostRelayOpenPermanentlyResponse* Arena::CreateMaybeMessage<::deviceapis::device::v1::PostRelayOpenPermanentlyResponse>(Arena*);
template <>
::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* Arena::CreateMaybeMessage<::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error>(Arena*);
template <>
::deviceapis::device::v1::PostRelayOpenRequest* Arena::CreateMaybeMessage<::deviceapis::device::v1::PostRelayOpenRequest>(Arena*);
template <>
::deviceapis::device::v1::PostRelayOpenResponse* Arena::CreateMaybeMessage<::deviceapis::device::v1::PostRelayOpenResponse>(Arena*);
template <>
::deviceapis::device::v1::PostRelayOpenResponse_Error* Arena::CreateMaybeMessage<::deviceapis::device::v1::PostRelayOpenResponse_Error>(Arena*);
template <>
::deviceapis::device::v1::RelayDtmf* Arena::CreateMaybeMessage<::deviceapis::device::v1::RelayDtmf>(Arena*);
template <>
::deviceapis::device::v1::RelayOpen* Arena::CreateMaybeMessage<::deviceapis::device::v1::RelayOpen>(Arena*);
template <>
::deviceapis::device::v1::RelayState* Arena::CreateMaybeMessage<::deviceapis::device::v1::RelayState>(Arena*);
PROTOBUF_NAMESPACE_CLOSE

namespace deviceapis {
namespace device {
namespace v1 {
enum RelayState_StateType : int {
  RelayState_StateType_STATE_TYPE_UNKNOWN = 0,
  RelayState_StateType_OPEN_TEMPORARY = 1,
  RelayState_StateType_CLOSED = 2,
  RelayState_StateType_OPEN_PERMANENT = 3,
  RelayState_StateType_RelayState_StateType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  RelayState_StateType_RelayState_StateType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool RelayState_StateType_IsValid(int value);
constexpr RelayState_StateType RelayState_StateType_StateType_MIN = static_cast<RelayState_StateType>(0);
constexpr RelayState_StateType RelayState_StateType_StateType_MAX = static_cast<RelayState_StateType>(3);
constexpr int RelayState_StateType_StateType_ARRAYSIZE = 3 + 1;
const std::string& RelayState_StateType_Name(RelayState_StateType value);
template <typename T>
const std::string& RelayState_StateType_Name(T value) {
  static_assert(std::is_same<T, RelayState_StateType>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to StateType_Name().");
  return RelayState_StateType_Name(static_cast<RelayState_StateType>(value));
}
const std::string& RelayState_StateType_Name(RelayState_StateType value);
bool RelayState_StateType_Parse(absl::string_view name, RelayState_StateType* value);
enum RelayOpen_LockType : int {
  RelayOpen_LockType_LOCK_TYPE_UNKNOWN = 0,
  RelayOpen_LockType_ELECTROMAGNETIC = 1,
  RelayOpen_LockType_ELECTROMECHANICAL = 2,
  RelayOpen_LockType_RelayOpen_LockType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  RelayOpen_LockType_RelayOpen_LockType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool RelayOpen_LockType_IsValid(int value);
constexpr RelayOpen_LockType RelayOpen_LockType_LockType_MIN = static_cast<RelayOpen_LockType>(0);
constexpr RelayOpen_LockType RelayOpen_LockType_LockType_MAX = static_cast<RelayOpen_LockType>(2);
constexpr int RelayOpen_LockType_LockType_ARRAYSIZE = 2 + 1;
const std::string& RelayOpen_LockType_Name(RelayOpen_LockType value);
template <typename T>
const std::string& RelayOpen_LockType_Name(T value) {
  static_assert(std::is_same<T, RelayOpen_LockType>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to LockType_Name().");
  return RelayOpen_LockType_Name(static_cast<RelayOpen_LockType>(value));
}
const std::string& RelayOpen_LockType_Name(RelayOpen_LockType value);
bool RelayOpen_LockType_Parse(absl::string_view name, RelayOpen_LockType* value);

// ===================================================================


// -------------------------------------------------------------------

class PostRelayCloseRequest final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.PostRelayCloseRequest) */ {
 public:
  inline PostRelayCloseRequest() : PostRelayCloseRequest(nullptr) {}
  ~PostRelayCloseRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR PostRelayCloseRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  PostRelayCloseRequest(const PostRelayCloseRequest& from);
  PostRelayCloseRequest(PostRelayCloseRequest&& from) noexcept
    : PostRelayCloseRequest() {
    *this = ::std::move(from);
  }

  inline PostRelayCloseRequest& operator=(const PostRelayCloseRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline PostRelayCloseRequest& operator=(PostRelayCloseRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const PostRelayCloseRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const PostRelayCloseRequest* internal_default_instance() {
    return reinterpret_cast<const PostRelayCloseRequest*>(
               &_PostRelayCloseRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(PostRelayCloseRequest& a, PostRelayCloseRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(PostRelayCloseRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PostRelayCloseRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PostRelayCloseRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<PostRelayCloseRequest>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const PostRelayCloseRequest& from);
  void MergeFrom(const PostRelayCloseRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(PostRelayCloseRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.PostRelayCloseRequest";
  }
  protected:
  explicit PostRelayCloseRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kRelayIndexFieldNumber = 1,
  };
  // int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_relay_index() ;
  ::int32_t relay_index() const;
  void set_relay_index(::int32_t value);

  private:
  ::int32_t _internal_relay_index() const;
  void _internal_set_relay_index(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.PostRelayCloseRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::int32_t relay_index_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class PostRelayCloseResponse_Error final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.PostRelayCloseResponse.Error) */ {
 public:
  inline PostRelayCloseResponse_Error() : PostRelayCloseResponse_Error(nullptr) {}
  ~PostRelayCloseResponse_Error() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR PostRelayCloseResponse_Error(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  PostRelayCloseResponse_Error(const PostRelayCloseResponse_Error& from);
  PostRelayCloseResponse_Error(PostRelayCloseResponse_Error&& from) noexcept
    : PostRelayCloseResponse_Error() {
    *this = ::std::move(from);
  }

  inline PostRelayCloseResponse_Error& operator=(const PostRelayCloseResponse_Error& from) {
    CopyFrom(from);
    return *this;
  }
  inline PostRelayCloseResponse_Error& operator=(PostRelayCloseResponse_Error&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const PostRelayCloseResponse_Error& default_instance() {
    return *internal_default_instance();
  }
  enum ReasonCase {
    kValidation = 1,
    REASON_NOT_SET = 0,
  };

  static inline const PostRelayCloseResponse_Error* internal_default_instance() {
    return reinterpret_cast<const PostRelayCloseResponse_Error*>(
               &_PostRelayCloseResponse_Error_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(PostRelayCloseResponse_Error& a, PostRelayCloseResponse_Error& b) {
    a.Swap(&b);
  }
  inline void Swap(PostRelayCloseResponse_Error* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PostRelayCloseResponse_Error* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PostRelayCloseResponse_Error* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<PostRelayCloseResponse_Error>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const PostRelayCloseResponse_Error& from);
  void MergeFrom(const PostRelayCloseResponse_Error& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(PostRelayCloseResponse_Error* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.PostRelayCloseResponse.Error";
  }
  protected:
  explicit PostRelayCloseResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kValidationFieldNumber = 1,
  };
  // .deviceapis.device.v1.ValidationError validation = 1;
  bool has_validation() const;
  private:
  bool _internal_has_validation() const;

  public:
  void clear_validation() ;
  const ::deviceapis::device::v1::ValidationError& validation() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::ValidationError* release_validation();
  ::deviceapis::device::v1::ValidationError* mutable_validation();
  void set_allocated_validation(::deviceapis::device::v1::ValidationError* validation);
  private:
  const ::deviceapis::device::v1::ValidationError& _internal_validation() const;
  ::deviceapis::device::v1::ValidationError* _internal_mutable_validation();
  public:
  void unsafe_arena_set_allocated_validation(
      ::deviceapis::device::v1::ValidationError* validation);
  ::deviceapis::device::v1::ValidationError* unsafe_arena_release_validation();
  void clear_reason();
  ReasonCase reason_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.PostRelayCloseResponse.Error)
 private:
  class _Internal;
  void set_has_validation();

  inline bool has_reason() const;
  inline void clear_has_reason();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union ReasonUnion {
      constexpr ReasonUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::ValidationError* validation_;
    } reason_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class PostRelayCloseResponse final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.PostRelayCloseResponse) */ {
 public:
  inline PostRelayCloseResponse() : PostRelayCloseResponse(nullptr) {}
  ~PostRelayCloseResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR PostRelayCloseResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  PostRelayCloseResponse(const PostRelayCloseResponse& from);
  PostRelayCloseResponse(PostRelayCloseResponse&& from) noexcept
    : PostRelayCloseResponse() {
    *this = ::std::move(from);
  }

  inline PostRelayCloseResponse& operator=(const PostRelayCloseResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline PostRelayCloseResponse& operator=(PostRelayCloseResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const PostRelayCloseResponse& default_instance() {
    return *internal_default_instance();
  }
  enum TypeCase {
    kError = 1,
    TYPE_NOT_SET = 0,
  };

  static inline const PostRelayCloseResponse* internal_default_instance() {
    return reinterpret_cast<const PostRelayCloseResponse*>(
               &_PostRelayCloseResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(PostRelayCloseResponse& a, PostRelayCloseResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(PostRelayCloseResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PostRelayCloseResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PostRelayCloseResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<PostRelayCloseResponse>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const PostRelayCloseResponse& from);
  void MergeFrom(const PostRelayCloseResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(PostRelayCloseResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.PostRelayCloseResponse";
  }
  protected:
  explicit PostRelayCloseResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  typedef PostRelayCloseResponse_Error Error;

  // accessors -------------------------------------------------------

  enum : int {
    kErrorFieldNumber = 1,
  };
  // .deviceapis.device.v1.PostRelayCloseResponse.Error error = 1;
  bool has_error() const;
  private:
  bool _internal_has_error() const;

  public:
  void clear_error() ;
  const ::deviceapis::device::v1::PostRelayCloseResponse_Error& error() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::PostRelayCloseResponse_Error* release_error();
  ::deviceapis::device::v1::PostRelayCloseResponse_Error* mutable_error();
  void set_allocated_error(::deviceapis::device::v1::PostRelayCloseResponse_Error* error);
  private:
  const ::deviceapis::device::v1::PostRelayCloseResponse_Error& _internal_error() const;
  ::deviceapis::device::v1::PostRelayCloseResponse_Error* _internal_mutable_error();
  public:
  void unsafe_arena_set_allocated_error(
      ::deviceapis::device::v1::PostRelayCloseResponse_Error* error);
  ::deviceapis::device::v1::PostRelayCloseResponse_Error* unsafe_arena_release_error();
  void clear_type();
  TypeCase type_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.PostRelayCloseResponse)
 private:
  class _Internal;
  void set_has_error();

  inline bool has_type() const;
  inline void clear_has_type();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union TypeUnion {
      constexpr TypeUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::PostRelayCloseResponse_Error* error_;
    } type_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class PostRelayOpenPermanentlyRequest final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.PostRelayOpenPermanentlyRequest) */ {
 public:
  inline PostRelayOpenPermanentlyRequest() : PostRelayOpenPermanentlyRequest(nullptr) {}
  ~PostRelayOpenPermanentlyRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR PostRelayOpenPermanentlyRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  PostRelayOpenPermanentlyRequest(const PostRelayOpenPermanentlyRequest& from);
  PostRelayOpenPermanentlyRequest(PostRelayOpenPermanentlyRequest&& from) noexcept
    : PostRelayOpenPermanentlyRequest() {
    *this = ::std::move(from);
  }

  inline PostRelayOpenPermanentlyRequest& operator=(const PostRelayOpenPermanentlyRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline PostRelayOpenPermanentlyRequest& operator=(PostRelayOpenPermanentlyRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const PostRelayOpenPermanentlyRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const PostRelayOpenPermanentlyRequest* internal_default_instance() {
    return reinterpret_cast<const PostRelayOpenPermanentlyRequest*>(
               &_PostRelayOpenPermanentlyRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(PostRelayOpenPermanentlyRequest& a, PostRelayOpenPermanentlyRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(PostRelayOpenPermanentlyRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PostRelayOpenPermanentlyRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PostRelayOpenPermanentlyRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<PostRelayOpenPermanentlyRequest>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const PostRelayOpenPermanentlyRequest& from);
  void MergeFrom(const PostRelayOpenPermanentlyRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(PostRelayOpenPermanentlyRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.PostRelayOpenPermanentlyRequest";
  }
  protected:
  explicit PostRelayOpenPermanentlyRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kRelayIndexFieldNumber = 1,
  };
  // int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_relay_index() ;
  ::int32_t relay_index() const;
  void set_relay_index(::int32_t value);

  private:
  ::int32_t _internal_relay_index() const;
  void _internal_set_relay_index(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.PostRelayOpenPermanentlyRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::int32_t relay_index_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class PostRelayOpenPermanentlyResponse_Error final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error) */ {
 public:
  inline PostRelayOpenPermanentlyResponse_Error() : PostRelayOpenPermanentlyResponse_Error(nullptr) {}
  ~PostRelayOpenPermanentlyResponse_Error() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR PostRelayOpenPermanentlyResponse_Error(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  PostRelayOpenPermanentlyResponse_Error(const PostRelayOpenPermanentlyResponse_Error& from);
  PostRelayOpenPermanentlyResponse_Error(PostRelayOpenPermanentlyResponse_Error&& from) noexcept
    : PostRelayOpenPermanentlyResponse_Error() {
    *this = ::std::move(from);
  }

  inline PostRelayOpenPermanentlyResponse_Error& operator=(const PostRelayOpenPermanentlyResponse_Error& from) {
    CopyFrom(from);
    return *this;
  }
  inline PostRelayOpenPermanentlyResponse_Error& operator=(PostRelayOpenPermanentlyResponse_Error&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const PostRelayOpenPermanentlyResponse_Error& default_instance() {
    return *internal_default_instance();
  }
  enum ReasonCase {
    kValidation = 1,
    REASON_NOT_SET = 0,
  };

  static inline const PostRelayOpenPermanentlyResponse_Error* internal_default_instance() {
    return reinterpret_cast<const PostRelayOpenPermanentlyResponse_Error*>(
               &_PostRelayOpenPermanentlyResponse_Error_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(PostRelayOpenPermanentlyResponse_Error& a, PostRelayOpenPermanentlyResponse_Error& b) {
    a.Swap(&b);
  }
  inline void Swap(PostRelayOpenPermanentlyResponse_Error* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PostRelayOpenPermanentlyResponse_Error* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PostRelayOpenPermanentlyResponse_Error* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<PostRelayOpenPermanentlyResponse_Error>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const PostRelayOpenPermanentlyResponse_Error& from);
  void MergeFrom(const PostRelayOpenPermanentlyResponse_Error& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(PostRelayOpenPermanentlyResponse_Error* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error";
  }
  protected:
  explicit PostRelayOpenPermanentlyResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kValidationFieldNumber = 1,
  };
  // .deviceapis.device.v1.ValidationError validation = 1;
  bool has_validation() const;
  private:
  bool _internal_has_validation() const;

  public:
  void clear_validation() ;
  const ::deviceapis::device::v1::ValidationError& validation() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::ValidationError* release_validation();
  ::deviceapis::device::v1::ValidationError* mutable_validation();
  void set_allocated_validation(::deviceapis::device::v1::ValidationError* validation);
  private:
  const ::deviceapis::device::v1::ValidationError& _internal_validation() const;
  ::deviceapis::device::v1::ValidationError* _internal_mutable_validation();
  public:
  void unsafe_arena_set_allocated_validation(
      ::deviceapis::device::v1::ValidationError* validation);
  ::deviceapis::device::v1::ValidationError* unsafe_arena_release_validation();
  void clear_reason();
  ReasonCase reason_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error)
 private:
  class _Internal;
  void set_has_validation();

  inline bool has_reason() const;
  inline void clear_has_reason();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union ReasonUnion {
      constexpr ReasonUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::ValidationError* validation_;
    } reason_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class PostRelayOpenPermanentlyResponse final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.PostRelayOpenPermanentlyResponse) */ {
 public:
  inline PostRelayOpenPermanentlyResponse() : PostRelayOpenPermanentlyResponse(nullptr) {}
  ~PostRelayOpenPermanentlyResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR PostRelayOpenPermanentlyResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  PostRelayOpenPermanentlyResponse(const PostRelayOpenPermanentlyResponse& from);
  PostRelayOpenPermanentlyResponse(PostRelayOpenPermanentlyResponse&& from) noexcept
    : PostRelayOpenPermanentlyResponse() {
    *this = ::std::move(from);
  }

  inline PostRelayOpenPermanentlyResponse& operator=(const PostRelayOpenPermanentlyResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline PostRelayOpenPermanentlyResponse& operator=(PostRelayOpenPermanentlyResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const PostRelayOpenPermanentlyResponse& default_instance() {
    return *internal_default_instance();
  }
  enum TypeCase {
    kError = 1,
    TYPE_NOT_SET = 0,
  };

  static inline const PostRelayOpenPermanentlyResponse* internal_default_instance() {
    return reinterpret_cast<const PostRelayOpenPermanentlyResponse*>(
               &_PostRelayOpenPermanentlyResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(PostRelayOpenPermanentlyResponse& a, PostRelayOpenPermanentlyResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(PostRelayOpenPermanentlyResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PostRelayOpenPermanentlyResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PostRelayOpenPermanentlyResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<PostRelayOpenPermanentlyResponse>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const PostRelayOpenPermanentlyResponse& from);
  void MergeFrom(const PostRelayOpenPermanentlyResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(PostRelayOpenPermanentlyResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.PostRelayOpenPermanentlyResponse";
  }
  protected:
  explicit PostRelayOpenPermanentlyResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  typedef PostRelayOpenPermanentlyResponse_Error Error;

  // accessors -------------------------------------------------------

  enum : int {
    kErrorFieldNumber = 1,
  };
  // .deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error error = 1;
  bool has_error() const;
  private:
  bool _internal_has_error() const;

  public:
  void clear_error() ;
  const ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error& error() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* release_error();
  ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* mutable_error();
  void set_allocated_error(::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* error);
  private:
  const ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error& _internal_error() const;
  ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* _internal_mutable_error();
  public:
  void unsafe_arena_set_allocated_error(
      ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* error);
  ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* unsafe_arena_release_error();
  void clear_type();
  TypeCase type_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.PostRelayOpenPermanentlyResponse)
 private:
  class _Internal;
  void set_has_error();

  inline bool has_type() const;
  inline void clear_has_type();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union TypeUnion {
      constexpr TypeUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* error_;
    } type_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class PostRelayOpenRequest final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.PostRelayOpenRequest) */ {
 public:
  inline PostRelayOpenRequest() : PostRelayOpenRequest(nullptr) {}
  ~PostRelayOpenRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR PostRelayOpenRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  PostRelayOpenRequest(const PostRelayOpenRequest& from);
  PostRelayOpenRequest(PostRelayOpenRequest&& from) noexcept
    : PostRelayOpenRequest() {
    *this = ::std::move(from);
  }

  inline PostRelayOpenRequest& operator=(const PostRelayOpenRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline PostRelayOpenRequest& operator=(PostRelayOpenRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const PostRelayOpenRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const PostRelayOpenRequest* internal_default_instance() {
    return reinterpret_cast<const PostRelayOpenRequest*>(
               &_PostRelayOpenRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(PostRelayOpenRequest& a, PostRelayOpenRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(PostRelayOpenRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PostRelayOpenRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PostRelayOpenRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<PostRelayOpenRequest>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const PostRelayOpenRequest& from);
  void MergeFrom(const PostRelayOpenRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(PostRelayOpenRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.PostRelayOpenRequest";
  }
  protected:
  explicit PostRelayOpenRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kRelayIndexFieldNumber = 1,
    kCurrentOpenTimeFieldNumber = 2,
  };
  // int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_relay_index() ;
  ::int32_t relay_index() const;
  void set_relay_index(::int32_t value);

  private:
  ::int32_t _internal_relay_index() const;
  void _internal_set_relay_index(::int32_t value);

  public:
  // int32 current_open_time = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_current_open_time() ;
  ::int32_t current_open_time() const;
  void set_current_open_time(::int32_t value);

  private:
  ::int32_t _internal_current_open_time() const;
  void _internal_set_current_open_time(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.PostRelayOpenRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::int32_t relay_index_;
    ::int32_t current_open_time_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class PostRelayOpenResponse_Error final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.PostRelayOpenResponse.Error) */ {
 public:
  inline PostRelayOpenResponse_Error() : PostRelayOpenResponse_Error(nullptr) {}
  ~PostRelayOpenResponse_Error() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR PostRelayOpenResponse_Error(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  PostRelayOpenResponse_Error(const PostRelayOpenResponse_Error& from);
  PostRelayOpenResponse_Error(PostRelayOpenResponse_Error&& from) noexcept
    : PostRelayOpenResponse_Error() {
    *this = ::std::move(from);
  }

  inline PostRelayOpenResponse_Error& operator=(const PostRelayOpenResponse_Error& from) {
    CopyFrom(from);
    return *this;
  }
  inline PostRelayOpenResponse_Error& operator=(PostRelayOpenResponse_Error&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const PostRelayOpenResponse_Error& default_instance() {
    return *internal_default_instance();
  }
  enum ReasonCase {
    kValidation = 1,
    REASON_NOT_SET = 0,
  };

  static inline const PostRelayOpenResponse_Error* internal_default_instance() {
    return reinterpret_cast<const PostRelayOpenResponse_Error*>(
               &_PostRelayOpenResponse_Error_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(PostRelayOpenResponse_Error& a, PostRelayOpenResponse_Error& b) {
    a.Swap(&b);
  }
  inline void Swap(PostRelayOpenResponse_Error* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PostRelayOpenResponse_Error* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PostRelayOpenResponse_Error* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<PostRelayOpenResponse_Error>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const PostRelayOpenResponse_Error& from);
  void MergeFrom(const PostRelayOpenResponse_Error& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(PostRelayOpenResponse_Error* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.PostRelayOpenResponse.Error";
  }
  protected:
  explicit PostRelayOpenResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kValidationFieldNumber = 1,
  };
  // .deviceapis.device.v1.ValidationError validation = 1;
  bool has_validation() const;
  private:
  bool _internal_has_validation() const;

  public:
  void clear_validation() ;
  const ::deviceapis::device::v1::ValidationError& validation() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::ValidationError* release_validation();
  ::deviceapis::device::v1::ValidationError* mutable_validation();
  void set_allocated_validation(::deviceapis::device::v1::ValidationError* validation);
  private:
  const ::deviceapis::device::v1::ValidationError& _internal_validation() const;
  ::deviceapis::device::v1::ValidationError* _internal_mutable_validation();
  public:
  void unsafe_arena_set_allocated_validation(
      ::deviceapis::device::v1::ValidationError* validation);
  ::deviceapis::device::v1::ValidationError* unsafe_arena_release_validation();
  void clear_reason();
  ReasonCase reason_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.PostRelayOpenResponse.Error)
 private:
  class _Internal;
  void set_has_validation();

  inline bool has_reason() const;
  inline void clear_has_reason();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union ReasonUnion {
      constexpr ReasonUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::ValidationError* validation_;
    } reason_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class PostRelayOpenResponse final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.PostRelayOpenResponse) */ {
 public:
  inline PostRelayOpenResponse() : PostRelayOpenResponse(nullptr) {}
  ~PostRelayOpenResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR PostRelayOpenResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  PostRelayOpenResponse(const PostRelayOpenResponse& from);
  PostRelayOpenResponse(PostRelayOpenResponse&& from) noexcept
    : PostRelayOpenResponse() {
    *this = ::std::move(from);
  }

  inline PostRelayOpenResponse& operator=(const PostRelayOpenResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline PostRelayOpenResponse& operator=(PostRelayOpenResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const PostRelayOpenResponse& default_instance() {
    return *internal_default_instance();
  }
  enum TypeCase {
    kError = 1,
    TYPE_NOT_SET = 0,
  };

  static inline const PostRelayOpenResponse* internal_default_instance() {
    return reinterpret_cast<const PostRelayOpenResponse*>(
               &_PostRelayOpenResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    8;

  friend void swap(PostRelayOpenResponse& a, PostRelayOpenResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(PostRelayOpenResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PostRelayOpenResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PostRelayOpenResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<PostRelayOpenResponse>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const PostRelayOpenResponse& from);
  void MergeFrom(const PostRelayOpenResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(PostRelayOpenResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.PostRelayOpenResponse";
  }
  protected:
  explicit PostRelayOpenResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  typedef PostRelayOpenResponse_Error Error;

  // accessors -------------------------------------------------------

  enum : int {
    kErrorFieldNumber = 1,
  };
  // .deviceapis.device.v1.PostRelayOpenResponse.Error error = 1;
  bool has_error() const;
  private:
  bool _internal_has_error() const;

  public:
  void clear_error() ;
  const ::deviceapis::device::v1::PostRelayOpenResponse_Error& error() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::PostRelayOpenResponse_Error* release_error();
  ::deviceapis::device::v1::PostRelayOpenResponse_Error* mutable_error();
  void set_allocated_error(::deviceapis::device::v1::PostRelayOpenResponse_Error* error);
  private:
  const ::deviceapis::device::v1::PostRelayOpenResponse_Error& _internal_error() const;
  ::deviceapis::device::v1::PostRelayOpenResponse_Error* _internal_mutable_error();
  public:
  void unsafe_arena_set_allocated_error(
      ::deviceapis::device::v1::PostRelayOpenResponse_Error* error);
  ::deviceapis::device::v1::PostRelayOpenResponse_Error* unsafe_arena_release_error();
  void clear_type();
  TypeCase type_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.PostRelayOpenResponse)
 private:
  class _Internal;
  void set_has_error();

  inline bool has_type() const;
  inline void clear_has_type();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union TypeUnion {
      constexpr TypeUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::PostRelayOpenResponse_Error* error_;
    } type_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class EditRelayPropsOpenRequest final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.EditRelayPropsOpenRequest) */ {
 public:
  inline EditRelayPropsOpenRequest() : EditRelayPropsOpenRequest(nullptr) {}
  ~EditRelayPropsOpenRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR EditRelayPropsOpenRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  EditRelayPropsOpenRequest(const EditRelayPropsOpenRequest& from);
  EditRelayPropsOpenRequest(EditRelayPropsOpenRequest&& from) noexcept
    : EditRelayPropsOpenRequest() {
    *this = ::std::move(from);
  }

  inline EditRelayPropsOpenRequest& operator=(const EditRelayPropsOpenRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline EditRelayPropsOpenRequest& operator=(EditRelayPropsOpenRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const EditRelayPropsOpenRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const EditRelayPropsOpenRequest* internal_default_instance() {
    return reinterpret_cast<const EditRelayPropsOpenRequest*>(
               &_EditRelayPropsOpenRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    9;

  friend void swap(EditRelayPropsOpenRequest& a, EditRelayPropsOpenRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(EditRelayPropsOpenRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EditRelayPropsOpenRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  EditRelayPropsOpenRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<EditRelayPropsOpenRequest>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const EditRelayPropsOpenRequest& from);
  void MergeFrom(const EditRelayPropsOpenRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(EditRelayPropsOpenRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.EditRelayPropsOpenRequest";
  }
  protected:
  explicit EditRelayPropsOpenRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 1,
    kUpdateMaskFieldNumber = 2,
  };
  // .deviceapis.device.v1.RelayOpen data = 1 [(.google.api.field_behavior) = REQUIRED];
  bool has_data() const;
  void clear_data() ;
  const ::deviceapis::device::v1::RelayOpen& data() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::RelayOpen* release_data();
  ::deviceapis::device::v1::RelayOpen* mutable_data();
  void set_allocated_data(::deviceapis::device::v1::RelayOpen* data);
  private:
  const ::deviceapis::device::v1::RelayOpen& _internal_data() const;
  ::deviceapis::device::v1::RelayOpen* _internal_mutable_data();
  public:
  void unsafe_arena_set_allocated_data(
      ::deviceapis::device::v1::RelayOpen* data);
  ::deviceapis::device::v1::RelayOpen* unsafe_arena_release_data();
  // .google.protobuf.FieldMask update_mask = 2;
  bool has_update_mask() const;
  void clear_update_mask() ;
  const ::PROTOBUF_NAMESPACE_ID::FieldMask& update_mask() const;
  PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::FieldMask* release_update_mask();
  ::PROTOBUF_NAMESPACE_ID::FieldMask* mutable_update_mask();
  void set_allocated_update_mask(::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask);
  private:
  const ::PROTOBUF_NAMESPACE_ID::FieldMask& _internal_update_mask() const;
  ::PROTOBUF_NAMESPACE_ID::FieldMask* _internal_mutable_update_mask();
  public:
  void unsafe_arena_set_allocated_update_mask(
      ::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask);
  ::PROTOBUF_NAMESPACE_ID::FieldMask* unsafe_arena_release_update_mask();
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.EditRelayPropsOpenRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::deviceapis::device::v1::RelayOpen* data_;
    ::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class EditRelayPropsDtmfRequest final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.EditRelayPropsDtmfRequest) */ {
 public:
  inline EditRelayPropsDtmfRequest() : EditRelayPropsDtmfRequest(nullptr) {}
  ~EditRelayPropsDtmfRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR EditRelayPropsDtmfRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  EditRelayPropsDtmfRequest(const EditRelayPropsDtmfRequest& from);
  EditRelayPropsDtmfRequest(EditRelayPropsDtmfRequest&& from) noexcept
    : EditRelayPropsDtmfRequest() {
    *this = ::std::move(from);
  }

  inline EditRelayPropsDtmfRequest& operator=(const EditRelayPropsDtmfRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline EditRelayPropsDtmfRequest& operator=(EditRelayPropsDtmfRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const EditRelayPropsDtmfRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const EditRelayPropsDtmfRequest* internal_default_instance() {
    return reinterpret_cast<const EditRelayPropsDtmfRequest*>(
               &_EditRelayPropsDtmfRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    10;

  friend void swap(EditRelayPropsDtmfRequest& a, EditRelayPropsDtmfRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(EditRelayPropsDtmfRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EditRelayPropsDtmfRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  EditRelayPropsDtmfRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<EditRelayPropsDtmfRequest>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const EditRelayPropsDtmfRequest& from);
  void MergeFrom(const EditRelayPropsDtmfRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(EditRelayPropsDtmfRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.EditRelayPropsDtmfRequest";
  }
  protected:
  explicit EditRelayPropsDtmfRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 1,
    kUpdateMaskFieldNumber = 2,
  };
  // .deviceapis.device.v1.RelayDtmf data = 1 [(.google.api.field_behavior) = REQUIRED];
  bool has_data() const;
  void clear_data() ;
  const ::deviceapis::device::v1::RelayDtmf& data() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::RelayDtmf* release_data();
  ::deviceapis::device::v1::RelayDtmf* mutable_data();
  void set_allocated_data(::deviceapis::device::v1::RelayDtmf* data);
  private:
  const ::deviceapis::device::v1::RelayDtmf& _internal_data() const;
  ::deviceapis::device::v1::RelayDtmf* _internal_mutable_data();
  public:
  void unsafe_arena_set_allocated_data(
      ::deviceapis::device::v1::RelayDtmf* data);
  ::deviceapis::device::v1::RelayDtmf* unsafe_arena_release_data();
  // .google.protobuf.FieldMask update_mask = 2;
  bool has_update_mask() const;
  void clear_update_mask() ;
  const ::PROTOBUF_NAMESPACE_ID::FieldMask& update_mask() const;
  PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::FieldMask* release_update_mask();
  ::PROTOBUF_NAMESPACE_ID::FieldMask* mutable_update_mask();
  void set_allocated_update_mask(::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask);
  private:
  const ::PROTOBUF_NAMESPACE_ID::FieldMask& _internal_update_mask() const;
  ::PROTOBUF_NAMESPACE_ID::FieldMask* _internal_mutable_update_mask();
  public:
  void unsafe_arena_set_allocated_update_mask(
      ::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask);
  ::PROTOBUF_NAMESPACE_ID::FieldMask* unsafe_arena_release_update_mask();
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.EditRelayPropsDtmfRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::deviceapis::device::v1::RelayDtmf* data_;
    ::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class EditRelayPropsOpenResponse_Error final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.EditRelayPropsOpenResponse.Error) */ {
 public:
  inline EditRelayPropsOpenResponse_Error() : EditRelayPropsOpenResponse_Error(nullptr) {}
  ~EditRelayPropsOpenResponse_Error() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR EditRelayPropsOpenResponse_Error(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  EditRelayPropsOpenResponse_Error(const EditRelayPropsOpenResponse_Error& from);
  EditRelayPropsOpenResponse_Error(EditRelayPropsOpenResponse_Error&& from) noexcept
    : EditRelayPropsOpenResponse_Error() {
    *this = ::std::move(from);
  }

  inline EditRelayPropsOpenResponse_Error& operator=(const EditRelayPropsOpenResponse_Error& from) {
    CopyFrom(from);
    return *this;
  }
  inline EditRelayPropsOpenResponse_Error& operator=(EditRelayPropsOpenResponse_Error&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const EditRelayPropsOpenResponse_Error& default_instance() {
    return *internal_default_instance();
  }
  enum ReasonCase {
    kValidation = 1,
    REASON_NOT_SET = 0,
  };

  static inline const EditRelayPropsOpenResponse_Error* internal_default_instance() {
    return reinterpret_cast<const EditRelayPropsOpenResponse_Error*>(
               &_EditRelayPropsOpenResponse_Error_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    11;

  friend void swap(EditRelayPropsOpenResponse_Error& a, EditRelayPropsOpenResponse_Error& b) {
    a.Swap(&b);
  }
  inline void Swap(EditRelayPropsOpenResponse_Error* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EditRelayPropsOpenResponse_Error* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  EditRelayPropsOpenResponse_Error* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<EditRelayPropsOpenResponse_Error>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const EditRelayPropsOpenResponse_Error& from);
  void MergeFrom(const EditRelayPropsOpenResponse_Error& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(EditRelayPropsOpenResponse_Error* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.EditRelayPropsOpenResponse.Error";
  }
  protected:
  explicit EditRelayPropsOpenResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kValidationFieldNumber = 1,
  };
  // .deviceapis.device.v1.ValidationError validation = 1;
  bool has_validation() const;
  private:
  bool _internal_has_validation() const;

  public:
  void clear_validation() ;
  const ::deviceapis::device::v1::ValidationError& validation() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::ValidationError* release_validation();
  ::deviceapis::device::v1::ValidationError* mutable_validation();
  void set_allocated_validation(::deviceapis::device::v1::ValidationError* validation);
  private:
  const ::deviceapis::device::v1::ValidationError& _internal_validation() const;
  ::deviceapis::device::v1::ValidationError* _internal_mutable_validation();
  public:
  void unsafe_arena_set_allocated_validation(
      ::deviceapis::device::v1::ValidationError* validation);
  ::deviceapis::device::v1::ValidationError* unsafe_arena_release_validation();
  void clear_reason();
  ReasonCase reason_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.EditRelayPropsOpenResponse.Error)
 private:
  class _Internal;
  void set_has_validation();

  inline bool has_reason() const;
  inline void clear_has_reason();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union ReasonUnion {
      constexpr ReasonUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::ValidationError* validation_;
    } reason_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class EditRelayPropsOpenResponse final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.EditRelayPropsOpenResponse) */ {
 public:
  inline EditRelayPropsOpenResponse() : EditRelayPropsOpenResponse(nullptr) {}
  ~EditRelayPropsOpenResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR EditRelayPropsOpenResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  EditRelayPropsOpenResponse(const EditRelayPropsOpenResponse& from);
  EditRelayPropsOpenResponse(EditRelayPropsOpenResponse&& from) noexcept
    : EditRelayPropsOpenResponse() {
    *this = ::std::move(from);
  }

  inline EditRelayPropsOpenResponse& operator=(const EditRelayPropsOpenResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline EditRelayPropsOpenResponse& operator=(EditRelayPropsOpenResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const EditRelayPropsOpenResponse& default_instance() {
    return *internal_default_instance();
  }
  enum TypeCase {
    kError = 1,
    TYPE_NOT_SET = 0,
  };

  static inline const EditRelayPropsOpenResponse* internal_default_instance() {
    return reinterpret_cast<const EditRelayPropsOpenResponse*>(
               &_EditRelayPropsOpenResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    12;

  friend void swap(EditRelayPropsOpenResponse& a, EditRelayPropsOpenResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(EditRelayPropsOpenResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EditRelayPropsOpenResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  EditRelayPropsOpenResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<EditRelayPropsOpenResponse>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const EditRelayPropsOpenResponse& from);
  void MergeFrom(const EditRelayPropsOpenResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(EditRelayPropsOpenResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.EditRelayPropsOpenResponse";
  }
  protected:
  explicit EditRelayPropsOpenResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  typedef EditRelayPropsOpenResponse_Error Error;

  // accessors -------------------------------------------------------

  enum : int {
    kErrorFieldNumber = 1,
  };
  // .deviceapis.device.v1.EditRelayPropsOpenResponse.Error error = 1;
  bool has_error() const;
  private:
  bool _internal_has_error() const;

  public:
  void clear_error() ;
  const ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error& error() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* release_error();
  ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* mutable_error();
  void set_allocated_error(::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* error);
  private:
  const ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error& _internal_error() const;
  ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* _internal_mutable_error();
  public:
  void unsafe_arena_set_allocated_error(
      ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* error);
  ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* unsafe_arena_release_error();
  void clear_type();
  TypeCase type_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.EditRelayPropsOpenResponse)
 private:
  class _Internal;
  void set_has_error();

  inline bool has_type() const;
  inline void clear_has_type();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union TypeUnion {
      constexpr TypeUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* error_;
    } type_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class EditRelayPropsDtmfResponse_Error final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.EditRelayPropsDtmfResponse.Error) */ {
 public:
  inline EditRelayPropsDtmfResponse_Error() : EditRelayPropsDtmfResponse_Error(nullptr) {}
  ~EditRelayPropsDtmfResponse_Error() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR EditRelayPropsDtmfResponse_Error(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  EditRelayPropsDtmfResponse_Error(const EditRelayPropsDtmfResponse_Error& from);
  EditRelayPropsDtmfResponse_Error(EditRelayPropsDtmfResponse_Error&& from) noexcept
    : EditRelayPropsDtmfResponse_Error() {
    *this = ::std::move(from);
  }

  inline EditRelayPropsDtmfResponse_Error& operator=(const EditRelayPropsDtmfResponse_Error& from) {
    CopyFrom(from);
    return *this;
  }
  inline EditRelayPropsDtmfResponse_Error& operator=(EditRelayPropsDtmfResponse_Error&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const EditRelayPropsDtmfResponse_Error& default_instance() {
    return *internal_default_instance();
  }
  enum ReasonCase {
    kValidation = 1,
    REASON_NOT_SET = 0,
  };

  static inline const EditRelayPropsDtmfResponse_Error* internal_default_instance() {
    return reinterpret_cast<const EditRelayPropsDtmfResponse_Error*>(
               &_EditRelayPropsDtmfResponse_Error_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    13;

  friend void swap(EditRelayPropsDtmfResponse_Error& a, EditRelayPropsDtmfResponse_Error& b) {
    a.Swap(&b);
  }
  inline void Swap(EditRelayPropsDtmfResponse_Error* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EditRelayPropsDtmfResponse_Error* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  EditRelayPropsDtmfResponse_Error* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<EditRelayPropsDtmfResponse_Error>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const EditRelayPropsDtmfResponse_Error& from);
  void MergeFrom(const EditRelayPropsDtmfResponse_Error& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(EditRelayPropsDtmfResponse_Error* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.EditRelayPropsDtmfResponse.Error";
  }
  protected:
  explicit EditRelayPropsDtmfResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kValidationFieldNumber = 1,
  };
  // .deviceapis.device.v1.ValidationError validation = 1;
  bool has_validation() const;
  private:
  bool _internal_has_validation() const;

  public:
  void clear_validation() ;
  const ::deviceapis::device::v1::ValidationError& validation() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::ValidationError* release_validation();
  ::deviceapis::device::v1::ValidationError* mutable_validation();
  void set_allocated_validation(::deviceapis::device::v1::ValidationError* validation);
  private:
  const ::deviceapis::device::v1::ValidationError& _internal_validation() const;
  ::deviceapis::device::v1::ValidationError* _internal_mutable_validation();
  public:
  void unsafe_arena_set_allocated_validation(
      ::deviceapis::device::v1::ValidationError* validation);
  ::deviceapis::device::v1::ValidationError* unsafe_arena_release_validation();
  void clear_reason();
  ReasonCase reason_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.EditRelayPropsDtmfResponse.Error)
 private:
  class _Internal;
  void set_has_validation();

  inline bool has_reason() const;
  inline void clear_has_reason();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union ReasonUnion {
      constexpr ReasonUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::ValidationError* validation_;
    } reason_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class EditRelayPropsDtmfResponse final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.EditRelayPropsDtmfResponse) */ {
 public:
  inline EditRelayPropsDtmfResponse() : EditRelayPropsDtmfResponse(nullptr) {}
  ~EditRelayPropsDtmfResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR EditRelayPropsDtmfResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  EditRelayPropsDtmfResponse(const EditRelayPropsDtmfResponse& from);
  EditRelayPropsDtmfResponse(EditRelayPropsDtmfResponse&& from) noexcept
    : EditRelayPropsDtmfResponse() {
    *this = ::std::move(from);
  }

  inline EditRelayPropsDtmfResponse& operator=(const EditRelayPropsDtmfResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline EditRelayPropsDtmfResponse& operator=(EditRelayPropsDtmfResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const EditRelayPropsDtmfResponse& default_instance() {
    return *internal_default_instance();
  }
  enum TypeCase {
    kError = 1,
    TYPE_NOT_SET = 0,
  };

  static inline const EditRelayPropsDtmfResponse* internal_default_instance() {
    return reinterpret_cast<const EditRelayPropsDtmfResponse*>(
               &_EditRelayPropsDtmfResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    14;

  friend void swap(EditRelayPropsDtmfResponse& a, EditRelayPropsDtmfResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(EditRelayPropsDtmfResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EditRelayPropsDtmfResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  EditRelayPropsDtmfResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<EditRelayPropsDtmfResponse>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const EditRelayPropsDtmfResponse& from);
  void MergeFrom(const EditRelayPropsDtmfResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(EditRelayPropsDtmfResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.EditRelayPropsDtmfResponse";
  }
  protected:
  explicit EditRelayPropsDtmfResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  typedef EditRelayPropsDtmfResponse_Error Error;

  // accessors -------------------------------------------------------

  enum : int {
    kErrorFieldNumber = 1,
  };
  // .deviceapis.device.v1.EditRelayPropsDtmfResponse.Error error = 1;
  bool has_error() const;
  private:
  bool _internal_has_error() const;

  public:
  void clear_error() ;
  const ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error& error() const;
  PROTOBUF_NODISCARD ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* release_error();
  ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* mutable_error();
  void set_allocated_error(::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* error);
  private:
  const ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error& _internal_error() const;
  ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* _internal_mutable_error();
  public:
  void unsafe_arena_set_allocated_error(
      ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* error);
  ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* unsafe_arena_release_error();
  void clear_type();
  TypeCase type_case() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.EditRelayPropsDtmfResponse)
 private:
  class _Internal;
  void set_has_error();

  inline bool has_type() const;
  inline void clear_has_type();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    union TypeUnion {
      constexpr TypeUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* error_;
    } type_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class GetRelayStatusListRequest final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.GetRelayStatusListRequest) */ {
 public:
  inline GetRelayStatusListRequest() : GetRelayStatusListRequest(nullptr) {}
  ~GetRelayStatusListRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR GetRelayStatusListRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  GetRelayStatusListRequest(const GetRelayStatusListRequest& from);
  GetRelayStatusListRequest(GetRelayStatusListRequest&& from) noexcept
    : GetRelayStatusListRequest() {
    *this = ::std::move(from);
  }

  inline GetRelayStatusListRequest& operator=(const GetRelayStatusListRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetRelayStatusListRequest& operator=(GetRelayStatusListRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const GetRelayStatusListRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetRelayStatusListRequest* internal_default_instance() {
    return reinterpret_cast<const GetRelayStatusListRequest*>(
               &_GetRelayStatusListRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    15;

  friend void swap(GetRelayStatusListRequest& a, GetRelayStatusListRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(GetRelayStatusListRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GetRelayStatusListRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GetRelayStatusListRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<GetRelayStatusListRequest>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const GetRelayStatusListRequest& from);
  void MergeFrom(const GetRelayStatusListRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(GetRelayStatusListRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.GetRelayStatusListRequest";
  }
  protected:
  explicit GetRelayStatusListRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.GetRelayStatusListRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class RelayState final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.RelayState) */ {
 public:
  inline RelayState() : RelayState(nullptr) {}
  ~RelayState() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR RelayState(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  RelayState(const RelayState& from);
  RelayState(RelayState&& from) noexcept
    : RelayState() {
    *this = ::std::move(from);
  }

  inline RelayState& operator=(const RelayState& from) {
    CopyFrom(from);
    return *this;
  }
  inline RelayState& operator=(RelayState&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const RelayState& default_instance() {
    return *internal_default_instance();
  }
  static inline const RelayState* internal_default_instance() {
    return reinterpret_cast<const RelayState*>(
               &_RelayState_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    16;

  friend void swap(RelayState& a, RelayState& b) {
    a.Swap(&b);
  }
  inline void Swap(RelayState* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RelayState* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  RelayState* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<RelayState>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const RelayState& from);
  void MergeFrom(const RelayState& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(RelayState* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.RelayState";
  }
  protected:
  explicit RelayState(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  using StateType = RelayState_StateType;
  static constexpr StateType STATE_TYPE_UNKNOWN = RelayState_StateType_STATE_TYPE_UNKNOWN;
  static constexpr StateType OPEN_TEMPORARY = RelayState_StateType_OPEN_TEMPORARY;
  static constexpr StateType CLOSED = RelayState_StateType_CLOSED;
  static constexpr StateType OPEN_PERMANENT = RelayState_StateType_OPEN_PERMANENT;
  static inline bool StateType_IsValid(int value) {
    return RelayState_StateType_IsValid(value);
  }
  static constexpr StateType StateType_MIN = RelayState_StateType_StateType_MIN;
  static constexpr StateType StateType_MAX = RelayState_StateType_StateType_MAX;
  static constexpr int StateType_ARRAYSIZE = RelayState_StateType_StateType_ARRAYSIZE;
  template <typename T>
  static inline const std::string& StateType_Name(T value) {
    return RelayState_StateType_Name(value);
  }
  static inline bool StateType_Parse(absl::string_view name, StateType* value) {
    return RelayState_StateType_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  enum : int {
    kRelayIndexFieldNumber = 1,
    kStateTypeFieldNumber = 2,
  };
  // int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_relay_index() ;
  ::int32_t relay_index() const;
  void set_relay_index(::int32_t value);

  private:
  ::int32_t _internal_relay_index() const;
  void _internal_set_relay_index(::int32_t value);

  public:
  // .deviceapis.device.v1.RelayState.StateType state_type = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_state_type() ;
  ::deviceapis::device::v1::RelayState_StateType state_type() const;
  void set_state_type(::deviceapis::device::v1::RelayState_StateType value);

  private:
  ::deviceapis::device::v1::RelayState_StateType _internal_state_type() const;
  void _internal_set_state_type(::deviceapis::device::v1::RelayState_StateType value);

  public:
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.RelayState)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::int32_t relay_index_;
    int state_type_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class GetRelayStatusListResponse final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.GetRelayStatusListResponse) */ {
 public:
  inline GetRelayStatusListResponse() : GetRelayStatusListResponse(nullptr) {}
  ~GetRelayStatusListResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR GetRelayStatusListResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  GetRelayStatusListResponse(const GetRelayStatusListResponse& from);
  GetRelayStatusListResponse(GetRelayStatusListResponse&& from) noexcept
    : GetRelayStatusListResponse() {
    *this = ::std::move(from);
  }

  inline GetRelayStatusListResponse& operator=(const GetRelayStatusListResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetRelayStatusListResponse& operator=(GetRelayStatusListResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const GetRelayStatusListResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetRelayStatusListResponse* internal_default_instance() {
    return reinterpret_cast<const GetRelayStatusListResponse*>(
               &_GetRelayStatusListResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    17;

  friend void swap(GetRelayStatusListResponse& a, GetRelayStatusListResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(GetRelayStatusListResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GetRelayStatusListResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GetRelayStatusListResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<GetRelayStatusListResponse>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const GetRelayStatusListResponse& from);
  void MergeFrom(const GetRelayStatusListResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(GetRelayStatusListResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.GetRelayStatusListResponse";
  }
  protected:
  explicit GetRelayStatusListResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 1,
  };
  // repeated .deviceapis.device.v1.RelayState data = 1;
  int data_size() const;
  private:
  int _internal_data_size() const;

  public:
  void clear_data() ;
  ::deviceapis::device::v1::RelayState* mutable_data(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayState >*
      mutable_data();
  private:
  const ::deviceapis::device::v1::RelayState& _internal_data(int index) const;
  ::deviceapis::device::v1::RelayState* _internal_add_data();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayState>& _internal_data() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayState>* _internal_mutable_data();
  public:
  const ::deviceapis::device::v1::RelayState& data(int index) const;
  ::deviceapis::device::v1::RelayState* add_data();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayState >&
      data() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.GetRelayStatusListResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayState > data_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class GetRelayOpenListRequest final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.GetRelayOpenListRequest) */ {
 public:
  inline GetRelayOpenListRequest() : GetRelayOpenListRequest(nullptr) {}
  ~GetRelayOpenListRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR GetRelayOpenListRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  GetRelayOpenListRequest(const GetRelayOpenListRequest& from);
  GetRelayOpenListRequest(GetRelayOpenListRequest&& from) noexcept
    : GetRelayOpenListRequest() {
    *this = ::std::move(from);
  }

  inline GetRelayOpenListRequest& operator=(const GetRelayOpenListRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetRelayOpenListRequest& operator=(GetRelayOpenListRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const GetRelayOpenListRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetRelayOpenListRequest* internal_default_instance() {
    return reinterpret_cast<const GetRelayOpenListRequest*>(
               &_GetRelayOpenListRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    18;

  friend void swap(GetRelayOpenListRequest& a, GetRelayOpenListRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(GetRelayOpenListRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GetRelayOpenListRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GetRelayOpenListRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<GetRelayOpenListRequest>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const GetRelayOpenListRequest& from);
  void MergeFrom(const GetRelayOpenListRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(GetRelayOpenListRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.GetRelayOpenListRequest";
  }
  protected:
  explicit GetRelayOpenListRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.GetRelayOpenListRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class GetRelayDtmfListRequest final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.GetRelayDtmfListRequest) */ {
 public:
  inline GetRelayDtmfListRequest() : GetRelayDtmfListRequest(nullptr) {}
  ~GetRelayDtmfListRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR GetRelayDtmfListRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  GetRelayDtmfListRequest(const GetRelayDtmfListRequest& from);
  GetRelayDtmfListRequest(GetRelayDtmfListRequest&& from) noexcept
    : GetRelayDtmfListRequest() {
    *this = ::std::move(from);
  }

  inline GetRelayDtmfListRequest& operator=(const GetRelayDtmfListRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetRelayDtmfListRequest& operator=(GetRelayDtmfListRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const GetRelayDtmfListRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetRelayDtmfListRequest* internal_default_instance() {
    return reinterpret_cast<const GetRelayDtmfListRequest*>(
               &_GetRelayDtmfListRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    19;

  friend void swap(GetRelayDtmfListRequest& a, GetRelayDtmfListRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(GetRelayDtmfListRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GetRelayDtmfListRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GetRelayDtmfListRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<GetRelayDtmfListRequest>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const GetRelayDtmfListRequest& from);
  void MergeFrom(const GetRelayDtmfListRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(GetRelayDtmfListRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.GetRelayDtmfListRequest";
  }
  protected:
  explicit GetRelayDtmfListRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.GetRelayDtmfListRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class RelayOpen final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.RelayOpen) */ {
 public:
  inline RelayOpen() : RelayOpen(nullptr) {}
  ~RelayOpen() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR RelayOpen(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  RelayOpen(const RelayOpen& from);
  RelayOpen(RelayOpen&& from) noexcept
    : RelayOpen() {
    *this = ::std::move(from);
  }

  inline RelayOpen& operator=(const RelayOpen& from) {
    CopyFrom(from);
    return *this;
  }
  inline RelayOpen& operator=(RelayOpen&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const RelayOpen& default_instance() {
    return *internal_default_instance();
  }
  static inline const RelayOpen* internal_default_instance() {
    return reinterpret_cast<const RelayOpen*>(
               &_RelayOpen_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    20;

  friend void swap(RelayOpen& a, RelayOpen& b) {
    a.Swap(&b);
  }
  inline void Swap(RelayOpen* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RelayOpen* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  RelayOpen* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<RelayOpen>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const RelayOpen& from);
  void MergeFrom(const RelayOpen& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(RelayOpen* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.RelayOpen";
  }
  protected:
  explicit RelayOpen(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  using LockType = RelayOpen_LockType;
  static constexpr LockType LOCK_TYPE_UNKNOWN = RelayOpen_LockType_LOCK_TYPE_UNKNOWN;
  static constexpr LockType ELECTROMAGNETIC = RelayOpen_LockType_ELECTROMAGNETIC;
  static constexpr LockType ELECTROMECHANICAL = RelayOpen_LockType_ELECTROMECHANICAL;
  static inline bool LockType_IsValid(int value) {
    return RelayOpen_LockType_IsValid(value);
  }
  static constexpr LockType LockType_MIN = RelayOpen_LockType_LockType_MIN;
  static constexpr LockType LockType_MAX = RelayOpen_LockType_LockType_MAX;
  static constexpr int LockType_ARRAYSIZE = RelayOpen_LockType_LockType_ARRAYSIZE;
  template <typename T>
  static inline const std::string& LockType_Name(T value) {
    return RelayOpen_LockType_Name(value);
  }
  static inline bool LockType_Parse(absl::string_view name, LockType* value) {
    return RelayOpen_LockType_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  enum : int {
    kRelayIndexFieldNumber = 1,
    kLockTypeFieldNumber = 2,
    kOpenTimeGeneralFieldNumber = 3,
    kOpenTimeEmergencyFieldNumber = 4,
  };
  // int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_relay_index() ;
  ::int32_t relay_index() const;
  void set_relay_index(::int32_t value);

  private:
  ::int32_t _internal_relay_index() const;
  void _internal_set_relay_index(::int32_t value);

  public:
  // .deviceapis.device.v1.RelayOpen.LockType lock_type = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_lock_type() ;
  ::deviceapis::device::v1::RelayOpen_LockType lock_type() const;
  void set_lock_type(::deviceapis::device::v1::RelayOpen_LockType value);

  private:
  ::deviceapis::device::v1::RelayOpen_LockType _internal_lock_type() const;
  void _internal_set_lock_type(::deviceapis::device::v1::RelayOpen_LockType value);

  public:
  // int32 open_time_general = 3 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_open_time_general() ;
  ::int32_t open_time_general() const;
  void set_open_time_general(::int32_t value);

  private:
  ::int32_t _internal_open_time_general() const;
  void _internal_set_open_time_general(::int32_t value);

  public:
  // int32 open_time_emergency = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_open_time_emergency() ;
  ::int32_t open_time_emergency() const;
  void set_open_time_emergency(::int32_t value);

  private:
  ::int32_t _internal_open_time_emergency() const;
  void _internal_set_open_time_emergency(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.RelayOpen)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::int32_t relay_index_;
    int lock_type_;
    ::int32_t open_time_general_;
    ::int32_t open_time_emergency_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class GetRelayOpenListResponse final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.GetRelayOpenListResponse) */ {
 public:
  inline GetRelayOpenListResponse() : GetRelayOpenListResponse(nullptr) {}
  ~GetRelayOpenListResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR GetRelayOpenListResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  GetRelayOpenListResponse(const GetRelayOpenListResponse& from);
  GetRelayOpenListResponse(GetRelayOpenListResponse&& from) noexcept
    : GetRelayOpenListResponse() {
    *this = ::std::move(from);
  }

  inline GetRelayOpenListResponse& operator=(const GetRelayOpenListResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetRelayOpenListResponse& operator=(GetRelayOpenListResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const GetRelayOpenListResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetRelayOpenListResponse* internal_default_instance() {
    return reinterpret_cast<const GetRelayOpenListResponse*>(
               &_GetRelayOpenListResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    21;

  friend void swap(GetRelayOpenListResponse& a, GetRelayOpenListResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(GetRelayOpenListResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GetRelayOpenListResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GetRelayOpenListResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<GetRelayOpenListResponse>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const GetRelayOpenListResponse& from);
  void MergeFrom(const GetRelayOpenListResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(GetRelayOpenListResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.GetRelayOpenListResponse";
  }
  protected:
  explicit GetRelayOpenListResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 1,
  };
  // repeated .deviceapis.device.v1.RelayOpen data = 1;
  int data_size() const;
  private:
  int _internal_data_size() const;

  public:
  void clear_data() ;
  ::deviceapis::device::v1::RelayOpen* mutable_data(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayOpen >*
      mutable_data();
  private:
  const ::deviceapis::device::v1::RelayOpen& _internal_data(int index) const;
  ::deviceapis::device::v1::RelayOpen* _internal_add_data();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayOpen>& _internal_data() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayOpen>* _internal_mutable_data();
  public:
  const ::deviceapis::device::v1::RelayOpen& data(int index) const;
  ::deviceapis::device::v1::RelayOpen* add_data();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayOpen >&
      data() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.GetRelayOpenListResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayOpen > data_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class RelayDtmf final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.RelayDtmf) */ {
 public:
  inline RelayDtmf() : RelayDtmf(nullptr) {}
  ~RelayDtmf() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR RelayDtmf(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  RelayDtmf(const RelayDtmf& from);
  RelayDtmf(RelayDtmf&& from) noexcept
    : RelayDtmf() {
    *this = ::std::move(from);
  }

  inline RelayDtmf& operator=(const RelayDtmf& from) {
    CopyFrom(from);
    return *this;
  }
  inline RelayDtmf& operator=(RelayDtmf&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const RelayDtmf& default_instance() {
    return *internal_default_instance();
  }
  static inline const RelayDtmf* internal_default_instance() {
    return reinterpret_cast<const RelayDtmf*>(
               &_RelayDtmf_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    22;

  friend void swap(RelayDtmf& a, RelayDtmf& b) {
    a.Swap(&b);
  }
  inline void Swap(RelayDtmf* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RelayDtmf* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  RelayDtmf* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<RelayDtmf>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const RelayDtmf& from);
  void MergeFrom(const RelayDtmf& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(RelayDtmf* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.RelayDtmf";
  }
  protected:
  explicit RelayDtmf(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDtmfCodeFieldNumber = 2,
    kRelayIndexFieldNumber = 1,
  };
  // string dtmf_code = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_dtmf_code() ;
  const std::string& dtmf_code() const;




  template <typename Arg_ = const std::string&, typename... Args_>
  void set_dtmf_code(Arg_&& arg, Args_... args);
  std::string* mutable_dtmf_code();
  PROTOBUF_NODISCARD std::string* release_dtmf_code();
  void set_allocated_dtmf_code(std::string* ptr);

  private:
  const std::string& _internal_dtmf_code() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_dtmf_code(
      const std::string& value);
  std::string* _internal_mutable_dtmf_code();

  public:
  // int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  void clear_relay_index() ;
  ::int32_t relay_index() const;
  void set_relay_index(::int32_t value);

  private:
  ::int32_t _internal_relay_index() const;
  void _internal_set_relay_index(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.RelayDtmf)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dtmf_code_;
    ::int32_t relay_index_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};// -------------------------------------------------------------------

class GetRelayDtmfListResponse final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:deviceapis.device.v1.GetRelayDtmfListResponse) */ {
 public:
  inline GetRelayDtmfListResponse() : GetRelayDtmfListResponse(nullptr) {}
  ~GetRelayDtmfListResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR GetRelayDtmfListResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  GetRelayDtmfListResponse(const GetRelayDtmfListResponse& from);
  GetRelayDtmfListResponse(GetRelayDtmfListResponse&& from) noexcept
    : GetRelayDtmfListResponse() {
    *this = ::std::move(from);
  }

  inline GetRelayDtmfListResponse& operator=(const GetRelayDtmfListResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetRelayDtmfListResponse& operator=(GetRelayDtmfListResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const GetRelayDtmfListResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetRelayDtmfListResponse* internal_default_instance() {
    return reinterpret_cast<const GetRelayDtmfListResponse*>(
               &_GetRelayDtmfListResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    23;

  friend void swap(GetRelayDtmfListResponse& a, GetRelayDtmfListResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(GetRelayDtmfListResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GetRelayDtmfListResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GetRelayDtmfListResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<GetRelayDtmfListResponse>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const GetRelayDtmfListResponse& from);
  void MergeFrom(const GetRelayDtmfListResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(GetRelayDtmfListResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "deviceapis.device.v1.GetRelayDtmfListResponse";
  }
  protected:
  explicit GetRelayDtmfListResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 1,
  };
  // repeated .deviceapis.device.v1.RelayDtmf data = 1;
  int data_size() const;
  private:
  int _internal_data_size() const;

  public:
  void clear_data() ;
  ::deviceapis::device::v1::RelayDtmf* mutable_data(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayDtmf >*
      mutable_data();
  private:
  const ::deviceapis::device::v1::RelayDtmf& _internal_data(int index) const;
  ::deviceapis::device::v1::RelayDtmf* _internal_add_data();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayDtmf>& _internal_data() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayDtmf>* _internal_mutable_data();
  public:
  const ::deviceapis::device::v1::RelayDtmf& data(int index) const;
  ::deviceapis::device::v1::RelayDtmf* add_data();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayDtmf >&
      data() const;
  // @@protoc_insertion_point(class_scope:deviceapis.device.v1.GetRelayDtmfListResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayDtmf > data_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto;
};

// ===================================================================




// ===================================================================


#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// PostRelayCloseRequest

// int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void PostRelayCloseRequest::clear_relay_index() {
  _impl_.relay_index_ = 0;
}
inline ::int32_t PostRelayCloseRequest::relay_index() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayCloseRequest.relay_index)
  return _internal_relay_index();
}
inline void PostRelayCloseRequest::set_relay_index(::int32_t value) {
  _internal_set_relay_index(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.PostRelayCloseRequest.relay_index)
}
inline ::int32_t PostRelayCloseRequest::_internal_relay_index() const {
  return _impl_.relay_index_;
}
inline void PostRelayCloseRequest::_internal_set_relay_index(::int32_t value) {
  ;
  _impl_.relay_index_ = value;
}

// -------------------------------------------------------------------

// PostRelayCloseResponse_Error

// .deviceapis.device.v1.ValidationError validation = 1;
inline bool PostRelayCloseResponse_Error::has_validation() const {
  return reason_case() == kValidation;
}
inline bool PostRelayCloseResponse_Error::_internal_has_validation() const {
  return reason_case() == kValidation;
}
inline void PostRelayCloseResponse_Error::set_has_validation() {
  _impl_._oneof_case_[0] = kValidation;
}
inline ::deviceapis::device::v1::ValidationError* PostRelayCloseResponse_Error::release_validation() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.PostRelayCloseResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::ValidationError& PostRelayCloseResponse_Error::_internal_validation() const {
  return reason_case() == kValidation
      ? *_impl_.reason_.validation_
      : reinterpret_cast<::deviceapis::device::v1::ValidationError&>(::deviceapis::device::v1::_ValidationError_default_instance_);
}
inline const ::deviceapis::device::v1::ValidationError& PostRelayCloseResponse_Error::validation() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayCloseResponse.Error.validation)
  return _internal_validation();
}
inline ::deviceapis::device::v1::ValidationError* PostRelayCloseResponse_Error::unsafe_arena_release_validation() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.PostRelayCloseResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void PostRelayCloseResponse_Error::unsafe_arena_set_allocated_validation(::deviceapis::device::v1::ValidationError* validation) {
  clear_reason();
  if (validation) {
    set_has_validation();
    _impl_.reason_.validation_ = validation;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.PostRelayCloseResponse.Error.validation)
}
inline ::deviceapis::device::v1::ValidationError* PostRelayCloseResponse_Error::_internal_mutable_validation() {
  if (reason_case() != kValidation) {
    clear_reason();
    set_has_validation();
    _impl_.reason_.validation_ = CreateMaybeMessage< ::deviceapis::device::v1::ValidationError >(GetArenaForAllocation());
  }
  return _impl_.reason_.validation_;
}
inline ::deviceapis::device::v1::ValidationError* PostRelayCloseResponse_Error::mutable_validation() {
  ::deviceapis::device::v1::ValidationError* _msg = _internal_mutable_validation();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.PostRelayCloseResponse.Error.validation)
  return _msg;
}

inline bool PostRelayCloseResponse_Error::has_reason() const {
  return reason_case() != REASON_NOT_SET;
}
inline void PostRelayCloseResponse_Error::clear_has_reason() {
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}
inline PostRelayCloseResponse_Error::ReasonCase PostRelayCloseResponse_Error::reason_case() const {
  return PostRelayCloseResponse_Error::ReasonCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// PostRelayCloseResponse

// .deviceapis.device.v1.PostRelayCloseResponse.Error error = 1;
inline bool PostRelayCloseResponse::has_error() const {
  return type_case() == kError;
}
inline bool PostRelayCloseResponse::_internal_has_error() const {
  return type_case() == kError;
}
inline void PostRelayCloseResponse::set_has_error() {
  _impl_._oneof_case_[0] = kError;
}
inline void PostRelayCloseResponse::clear_error() {
  if (type_case() == kError) {
    if (GetArenaForAllocation() == nullptr) {
      delete _impl_.type_.error_;
    }
    clear_has_type();
  }
}
inline ::deviceapis::device::v1::PostRelayCloseResponse_Error* PostRelayCloseResponse::release_error() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.PostRelayCloseResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::PostRelayCloseResponse_Error* temp = _impl_.type_.error_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::PostRelayCloseResponse_Error& PostRelayCloseResponse::_internal_error() const {
  return type_case() == kError
      ? *_impl_.type_.error_
      : reinterpret_cast<::deviceapis::device::v1::PostRelayCloseResponse_Error&>(::deviceapis::device::v1::_PostRelayCloseResponse_Error_default_instance_);
}
inline const ::deviceapis::device::v1::PostRelayCloseResponse_Error& PostRelayCloseResponse::error() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayCloseResponse.error)
  return _internal_error();
}
inline ::deviceapis::device::v1::PostRelayCloseResponse_Error* PostRelayCloseResponse::unsafe_arena_release_error() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.PostRelayCloseResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::PostRelayCloseResponse_Error* temp = _impl_.type_.error_;
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void PostRelayCloseResponse::unsafe_arena_set_allocated_error(::deviceapis::device::v1::PostRelayCloseResponse_Error* error) {
  clear_type();
  if (error) {
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.PostRelayCloseResponse.error)
}
inline ::deviceapis::device::v1::PostRelayCloseResponse_Error* PostRelayCloseResponse::_internal_mutable_error() {
  if (type_case() != kError) {
    clear_type();
    set_has_error();
    _impl_.type_.error_ = CreateMaybeMessage< ::deviceapis::device::v1::PostRelayCloseResponse_Error >(GetArenaForAllocation());
  }
  return _impl_.type_.error_;
}
inline ::deviceapis::device::v1::PostRelayCloseResponse_Error* PostRelayCloseResponse::mutable_error() {
  ::deviceapis::device::v1::PostRelayCloseResponse_Error* _msg = _internal_mutable_error();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.PostRelayCloseResponse.error)
  return _msg;
}

inline bool PostRelayCloseResponse::has_type() const {
  return type_case() != TYPE_NOT_SET;
}
inline void PostRelayCloseResponse::clear_has_type() {
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}
inline PostRelayCloseResponse::TypeCase PostRelayCloseResponse::type_case() const {
  return PostRelayCloseResponse::TypeCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// PostRelayOpenPermanentlyRequest

// int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void PostRelayOpenPermanentlyRequest::clear_relay_index() {
  _impl_.relay_index_ = 0;
}
inline ::int32_t PostRelayOpenPermanentlyRequest::relay_index() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayOpenPermanentlyRequest.relay_index)
  return _internal_relay_index();
}
inline void PostRelayOpenPermanentlyRequest::set_relay_index(::int32_t value) {
  _internal_set_relay_index(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.PostRelayOpenPermanentlyRequest.relay_index)
}
inline ::int32_t PostRelayOpenPermanentlyRequest::_internal_relay_index() const {
  return _impl_.relay_index_;
}
inline void PostRelayOpenPermanentlyRequest::_internal_set_relay_index(::int32_t value) {
  ;
  _impl_.relay_index_ = value;
}

// -------------------------------------------------------------------

// PostRelayOpenPermanentlyResponse_Error

// .deviceapis.device.v1.ValidationError validation = 1;
inline bool PostRelayOpenPermanentlyResponse_Error::has_validation() const {
  return reason_case() == kValidation;
}
inline bool PostRelayOpenPermanentlyResponse_Error::_internal_has_validation() const {
  return reason_case() == kValidation;
}
inline void PostRelayOpenPermanentlyResponse_Error::set_has_validation() {
  _impl_._oneof_case_[0] = kValidation;
}
inline ::deviceapis::device::v1::ValidationError* PostRelayOpenPermanentlyResponse_Error::release_validation() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::ValidationError& PostRelayOpenPermanentlyResponse_Error::_internal_validation() const {
  return reason_case() == kValidation
      ? *_impl_.reason_.validation_
      : reinterpret_cast<::deviceapis::device::v1::ValidationError&>(::deviceapis::device::v1::_ValidationError_default_instance_);
}
inline const ::deviceapis::device::v1::ValidationError& PostRelayOpenPermanentlyResponse_Error::validation() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error.validation)
  return _internal_validation();
}
inline ::deviceapis::device::v1::ValidationError* PostRelayOpenPermanentlyResponse_Error::unsafe_arena_release_validation() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void PostRelayOpenPermanentlyResponse_Error::unsafe_arena_set_allocated_validation(::deviceapis::device::v1::ValidationError* validation) {
  clear_reason();
  if (validation) {
    set_has_validation();
    _impl_.reason_.validation_ = validation;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error.validation)
}
inline ::deviceapis::device::v1::ValidationError* PostRelayOpenPermanentlyResponse_Error::_internal_mutable_validation() {
  if (reason_case() != kValidation) {
    clear_reason();
    set_has_validation();
    _impl_.reason_.validation_ = CreateMaybeMessage< ::deviceapis::device::v1::ValidationError >(GetArenaForAllocation());
  }
  return _impl_.reason_.validation_;
}
inline ::deviceapis::device::v1::ValidationError* PostRelayOpenPermanentlyResponse_Error::mutable_validation() {
  ::deviceapis::device::v1::ValidationError* _msg = _internal_mutable_validation();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error.validation)
  return _msg;
}

inline bool PostRelayOpenPermanentlyResponse_Error::has_reason() const {
  return reason_case() != REASON_NOT_SET;
}
inline void PostRelayOpenPermanentlyResponse_Error::clear_has_reason() {
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}
inline PostRelayOpenPermanentlyResponse_Error::ReasonCase PostRelayOpenPermanentlyResponse_Error::reason_case() const {
  return PostRelayOpenPermanentlyResponse_Error::ReasonCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// PostRelayOpenPermanentlyResponse

// .deviceapis.device.v1.PostRelayOpenPermanentlyResponse.Error error = 1;
inline bool PostRelayOpenPermanentlyResponse::has_error() const {
  return type_case() == kError;
}
inline bool PostRelayOpenPermanentlyResponse::_internal_has_error() const {
  return type_case() == kError;
}
inline void PostRelayOpenPermanentlyResponse::set_has_error() {
  _impl_._oneof_case_[0] = kError;
}
inline void PostRelayOpenPermanentlyResponse::clear_error() {
  if (type_case() == kError) {
    if (GetArenaForAllocation() == nullptr) {
      delete _impl_.type_.error_;
    }
    clear_has_type();
  }
}
inline ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* PostRelayOpenPermanentlyResponse::release_error() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* temp = _impl_.type_.error_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error& PostRelayOpenPermanentlyResponse::_internal_error() const {
  return type_case() == kError
      ? *_impl_.type_.error_
      : reinterpret_cast<::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error&>(::deviceapis::device::v1::_PostRelayOpenPermanentlyResponse_Error_default_instance_);
}
inline const ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error& PostRelayOpenPermanentlyResponse::error() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.error)
  return _internal_error();
}
inline ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* PostRelayOpenPermanentlyResponse::unsafe_arena_release_error() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* temp = _impl_.type_.error_;
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void PostRelayOpenPermanentlyResponse::unsafe_arena_set_allocated_error(::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* error) {
  clear_type();
  if (error) {
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.error)
}
inline ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* PostRelayOpenPermanentlyResponse::_internal_mutable_error() {
  if (type_case() != kError) {
    clear_type();
    set_has_error();
    _impl_.type_.error_ = CreateMaybeMessage< ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error >(GetArenaForAllocation());
  }
  return _impl_.type_.error_;
}
inline ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* PostRelayOpenPermanentlyResponse::mutable_error() {
  ::deviceapis::device::v1::PostRelayOpenPermanentlyResponse_Error* _msg = _internal_mutable_error();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.PostRelayOpenPermanentlyResponse.error)
  return _msg;
}

inline bool PostRelayOpenPermanentlyResponse::has_type() const {
  return type_case() != TYPE_NOT_SET;
}
inline void PostRelayOpenPermanentlyResponse::clear_has_type() {
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}
inline PostRelayOpenPermanentlyResponse::TypeCase PostRelayOpenPermanentlyResponse::type_case() const {
  return PostRelayOpenPermanentlyResponse::TypeCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// PostRelayOpenRequest

// int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void PostRelayOpenRequest::clear_relay_index() {
  _impl_.relay_index_ = 0;
}
inline ::int32_t PostRelayOpenRequest::relay_index() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayOpenRequest.relay_index)
  return _internal_relay_index();
}
inline void PostRelayOpenRequest::set_relay_index(::int32_t value) {
  _internal_set_relay_index(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.PostRelayOpenRequest.relay_index)
}
inline ::int32_t PostRelayOpenRequest::_internal_relay_index() const {
  return _impl_.relay_index_;
}
inline void PostRelayOpenRequest::_internal_set_relay_index(::int32_t value) {
  ;
  _impl_.relay_index_ = value;
}

// int32 current_open_time = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void PostRelayOpenRequest::clear_current_open_time() {
  _impl_.current_open_time_ = 0;
}
inline ::int32_t PostRelayOpenRequest::current_open_time() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayOpenRequest.current_open_time)
  return _internal_current_open_time();
}
inline void PostRelayOpenRequest::set_current_open_time(::int32_t value) {
  _internal_set_current_open_time(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.PostRelayOpenRequest.current_open_time)
}
inline ::int32_t PostRelayOpenRequest::_internal_current_open_time() const {
  return _impl_.current_open_time_;
}
inline void PostRelayOpenRequest::_internal_set_current_open_time(::int32_t value) {
  ;
  _impl_.current_open_time_ = value;
}

// -------------------------------------------------------------------

// PostRelayOpenResponse_Error

// .deviceapis.device.v1.ValidationError validation = 1;
inline bool PostRelayOpenResponse_Error::has_validation() const {
  return reason_case() == kValidation;
}
inline bool PostRelayOpenResponse_Error::_internal_has_validation() const {
  return reason_case() == kValidation;
}
inline void PostRelayOpenResponse_Error::set_has_validation() {
  _impl_._oneof_case_[0] = kValidation;
}
inline ::deviceapis::device::v1::ValidationError* PostRelayOpenResponse_Error::release_validation() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.PostRelayOpenResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::ValidationError& PostRelayOpenResponse_Error::_internal_validation() const {
  return reason_case() == kValidation
      ? *_impl_.reason_.validation_
      : reinterpret_cast<::deviceapis::device::v1::ValidationError&>(::deviceapis::device::v1::_ValidationError_default_instance_);
}
inline const ::deviceapis::device::v1::ValidationError& PostRelayOpenResponse_Error::validation() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayOpenResponse.Error.validation)
  return _internal_validation();
}
inline ::deviceapis::device::v1::ValidationError* PostRelayOpenResponse_Error::unsafe_arena_release_validation() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.PostRelayOpenResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void PostRelayOpenResponse_Error::unsafe_arena_set_allocated_validation(::deviceapis::device::v1::ValidationError* validation) {
  clear_reason();
  if (validation) {
    set_has_validation();
    _impl_.reason_.validation_ = validation;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.PostRelayOpenResponse.Error.validation)
}
inline ::deviceapis::device::v1::ValidationError* PostRelayOpenResponse_Error::_internal_mutable_validation() {
  if (reason_case() != kValidation) {
    clear_reason();
    set_has_validation();
    _impl_.reason_.validation_ = CreateMaybeMessage< ::deviceapis::device::v1::ValidationError >(GetArenaForAllocation());
  }
  return _impl_.reason_.validation_;
}
inline ::deviceapis::device::v1::ValidationError* PostRelayOpenResponse_Error::mutable_validation() {
  ::deviceapis::device::v1::ValidationError* _msg = _internal_mutable_validation();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.PostRelayOpenResponse.Error.validation)
  return _msg;
}

inline bool PostRelayOpenResponse_Error::has_reason() const {
  return reason_case() != REASON_NOT_SET;
}
inline void PostRelayOpenResponse_Error::clear_has_reason() {
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}
inline PostRelayOpenResponse_Error::ReasonCase PostRelayOpenResponse_Error::reason_case() const {
  return PostRelayOpenResponse_Error::ReasonCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// PostRelayOpenResponse

// .deviceapis.device.v1.PostRelayOpenResponse.Error error = 1;
inline bool PostRelayOpenResponse::has_error() const {
  return type_case() == kError;
}
inline bool PostRelayOpenResponse::_internal_has_error() const {
  return type_case() == kError;
}
inline void PostRelayOpenResponse::set_has_error() {
  _impl_._oneof_case_[0] = kError;
}
inline void PostRelayOpenResponse::clear_error() {
  if (type_case() == kError) {
    if (GetArenaForAllocation() == nullptr) {
      delete _impl_.type_.error_;
    }
    clear_has_type();
  }
}
inline ::deviceapis::device::v1::PostRelayOpenResponse_Error* PostRelayOpenResponse::release_error() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.PostRelayOpenResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::PostRelayOpenResponse_Error* temp = _impl_.type_.error_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::PostRelayOpenResponse_Error& PostRelayOpenResponse::_internal_error() const {
  return type_case() == kError
      ? *_impl_.type_.error_
      : reinterpret_cast<::deviceapis::device::v1::PostRelayOpenResponse_Error&>(::deviceapis::device::v1::_PostRelayOpenResponse_Error_default_instance_);
}
inline const ::deviceapis::device::v1::PostRelayOpenResponse_Error& PostRelayOpenResponse::error() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.PostRelayOpenResponse.error)
  return _internal_error();
}
inline ::deviceapis::device::v1::PostRelayOpenResponse_Error* PostRelayOpenResponse::unsafe_arena_release_error() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.PostRelayOpenResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::PostRelayOpenResponse_Error* temp = _impl_.type_.error_;
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void PostRelayOpenResponse::unsafe_arena_set_allocated_error(::deviceapis::device::v1::PostRelayOpenResponse_Error* error) {
  clear_type();
  if (error) {
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.PostRelayOpenResponse.error)
}
inline ::deviceapis::device::v1::PostRelayOpenResponse_Error* PostRelayOpenResponse::_internal_mutable_error() {
  if (type_case() != kError) {
    clear_type();
    set_has_error();
    _impl_.type_.error_ = CreateMaybeMessage< ::deviceapis::device::v1::PostRelayOpenResponse_Error >(GetArenaForAllocation());
  }
  return _impl_.type_.error_;
}
inline ::deviceapis::device::v1::PostRelayOpenResponse_Error* PostRelayOpenResponse::mutable_error() {
  ::deviceapis::device::v1::PostRelayOpenResponse_Error* _msg = _internal_mutable_error();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.PostRelayOpenResponse.error)
  return _msg;
}

inline bool PostRelayOpenResponse::has_type() const {
  return type_case() != TYPE_NOT_SET;
}
inline void PostRelayOpenResponse::clear_has_type() {
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}
inline PostRelayOpenResponse::TypeCase PostRelayOpenResponse::type_case() const {
  return PostRelayOpenResponse::TypeCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// EditRelayPropsOpenRequest

// .deviceapis.device.v1.RelayOpen data = 1 [(.google.api.field_behavior) = REQUIRED];
inline bool EditRelayPropsOpenRequest::has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.data_ != nullptr);
  return value;
}
inline void EditRelayPropsOpenRequest::clear_data() {
  if (_impl_.data_ != nullptr) _impl_.data_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::deviceapis::device::v1::RelayOpen& EditRelayPropsOpenRequest::_internal_data() const {
  const ::deviceapis::device::v1::RelayOpen* p = _impl_.data_;
  return p != nullptr ? *p : reinterpret_cast<const ::deviceapis::device::v1::RelayOpen&>(
      ::deviceapis::device::v1::_RelayOpen_default_instance_);
}
inline const ::deviceapis::device::v1::RelayOpen& EditRelayPropsOpenRequest::data() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.EditRelayPropsOpenRequest.data)
  return _internal_data();
}
inline void EditRelayPropsOpenRequest::unsafe_arena_set_allocated_data(
    ::deviceapis::device::v1::RelayOpen* data) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.data_);
  }
  _impl_.data_ = data;
  if (data) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.EditRelayPropsOpenRequest.data)
}
inline ::deviceapis::device::v1::RelayOpen* EditRelayPropsOpenRequest::release_data() {
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::deviceapis::device::v1::RelayOpen* temp = _impl_.data_;
  _impl_.data_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::deviceapis::device::v1::RelayOpen* EditRelayPropsOpenRequest::unsafe_arena_release_data() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.EditRelayPropsOpenRequest.data)
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::deviceapis::device::v1::RelayOpen* temp = _impl_.data_;
  _impl_.data_ = nullptr;
  return temp;
}
inline ::deviceapis::device::v1::RelayOpen* EditRelayPropsOpenRequest::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.data_ == nullptr) {
    auto* p = CreateMaybeMessage<::deviceapis::device::v1::RelayOpen>(GetArenaForAllocation());
    _impl_.data_ = p;
  }
  return _impl_.data_;
}
inline ::deviceapis::device::v1::RelayOpen* EditRelayPropsOpenRequest::mutable_data() {
  ::deviceapis::device::v1::RelayOpen* _msg = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.EditRelayPropsOpenRequest.data)
  return _msg;
}
inline void EditRelayPropsOpenRequest::set_allocated_data(::deviceapis::device::v1::RelayOpen* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete _impl_.data_;
  }
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_ = data;
  // @@protoc_insertion_point(field_set_allocated:deviceapis.device.v1.EditRelayPropsOpenRequest.data)
}

// .google.protobuf.FieldMask update_mask = 2;
inline bool EditRelayPropsOpenRequest::has_update_mask() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.update_mask_ != nullptr);
  return value;
}
inline const ::PROTOBUF_NAMESPACE_ID::FieldMask& EditRelayPropsOpenRequest::_internal_update_mask() const {
  const ::PROTOBUF_NAMESPACE_ID::FieldMask* p = _impl_.update_mask_;
  return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::FieldMask&>(
      ::PROTOBUF_NAMESPACE_ID::_FieldMask_default_instance_);
}
inline const ::PROTOBUF_NAMESPACE_ID::FieldMask& EditRelayPropsOpenRequest::update_mask() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.EditRelayPropsOpenRequest.update_mask)
  return _internal_update_mask();
}
inline void EditRelayPropsOpenRequest::unsafe_arena_set_allocated_update_mask(
    ::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.update_mask_);
  }
  _impl_.update_mask_ = update_mask;
  if (update_mask) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.EditRelayPropsOpenRequest.update_mask)
}
inline ::PROTOBUF_NAMESPACE_ID::FieldMask* EditRelayPropsOpenRequest::release_update_mask() {
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::PROTOBUF_NAMESPACE_ID::FieldMask* temp = _impl_.update_mask_;
  _impl_.update_mask_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::PROTOBUF_NAMESPACE_ID::FieldMask* EditRelayPropsOpenRequest::unsafe_arena_release_update_mask() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.EditRelayPropsOpenRequest.update_mask)
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::PROTOBUF_NAMESPACE_ID::FieldMask* temp = _impl_.update_mask_;
  _impl_.update_mask_ = nullptr;
  return temp;
}
inline ::PROTOBUF_NAMESPACE_ID::FieldMask* EditRelayPropsOpenRequest::_internal_mutable_update_mask() {
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.update_mask_ == nullptr) {
    auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FieldMask>(GetArenaForAllocation());
    _impl_.update_mask_ = p;
  }
  return _impl_.update_mask_;
}
inline ::PROTOBUF_NAMESPACE_ID::FieldMask* EditRelayPropsOpenRequest::mutable_update_mask() {
  ::PROTOBUF_NAMESPACE_ID::FieldMask* _msg = _internal_mutable_update_mask();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.EditRelayPropsOpenRequest.update_mask)
  return _msg;
}
inline void EditRelayPropsOpenRequest::set_allocated_update_mask(::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.update_mask_);
  }
  if (update_mask) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(update_mask));
    if (message_arena != submessage_arena) {
      update_mask = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, update_mask, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.update_mask_ = update_mask;
  // @@protoc_insertion_point(field_set_allocated:deviceapis.device.v1.EditRelayPropsOpenRequest.update_mask)
}

// -------------------------------------------------------------------

// EditRelayPropsDtmfRequest

// .deviceapis.device.v1.RelayDtmf data = 1 [(.google.api.field_behavior) = REQUIRED];
inline bool EditRelayPropsDtmfRequest::has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.data_ != nullptr);
  return value;
}
inline void EditRelayPropsDtmfRequest::clear_data() {
  if (_impl_.data_ != nullptr) _impl_.data_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::deviceapis::device::v1::RelayDtmf& EditRelayPropsDtmfRequest::_internal_data() const {
  const ::deviceapis::device::v1::RelayDtmf* p = _impl_.data_;
  return p != nullptr ? *p : reinterpret_cast<const ::deviceapis::device::v1::RelayDtmf&>(
      ::deviceapis::device::v1::_RelayDtmf_default_instance_);
}
inline const ::deviceapis::device::v1::RelayDtmf& EditRelayPropsDtmfRequest::data() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.EditRelayPropsDtmfRequest.data)
  return _internal_data();
}
inline void EditRelayPropsDtmfRequest::unsafe_arena_set_allocated_data(
    ::deviceapis::device::v1::RelayDtmf* data) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.data_);
  }
  _impl_.data_ = data;
  if (data) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.EditRelayPropsDtmfRequest.data)
}
inline ::deviceapis::device::v1::RelayDtmf* EditRelayPropsDtmfRequest::release_data() {
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::deviceapis::device::v1::RelayDtmf* temp = _impl_.data_;
  _impl_.data_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::deviceapis::device::v1::RelayDtmf* EditRelayPropsDtmfRequest::unsafe_arena_release_data() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.EditRelayPropsDtmfRequest.data)
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::deviceapis::device::v1::RelayDtmf* temp = _impl_.data_;
  _impl_.data_ = nullptr;
  return temp;
}
inline ::deviceapis::device::v1::RelayDtmf* EditRelayPropsDtmfRequest::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.data_ == nullptr) {
    auto* p = CreateMaybeMessage<::deviceapis::device::v1::RelayDtmf>(GetArenaForAllocation());
    _impl_.data_ = p;
  }
  return _impl_.data_;
}
inline ::deviceapis::device::v1::RelayDtmf* EditRelayPropsDtmfRequest::mutable_data() {
  ::deviceapis::device::v1::RelayDtmf* _msg = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.EditRelayPropsDtmfRequest.data)
  return _msg;
}
inline void EditRelayPropsDtmfRequest::set_allocated_data(::deviceapis::device::v1::RelayDtmf* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete _impl_.data_;
  }
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_ = data;
  // @@protoc_insertion_point(field_set_allocated:deviceapis.device.v1.EditRelayPropsDtmfRequest.data)
}

// .google.protobuf.FieldMask update_mask = 2;
inline bool EditRelayPropsDtmfRequest::has_update_mask() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.update_mask_ != nullptr);
  return value;
}
inline const ::PROTOBUF_NAMESPACE_ID::FieldMask& EditRelayPropsDtmfRequest::_internal_update_mask() const {
  const ::PROTOBUF_NAMESPACE_ID::FieldMask* p = _impl_.update_mask_;
  return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::FieldMask&>(
      ::PROTOBUF_NAMESPACE_ID::_FieldMask_default_instance_);
}
inline const ::PROTOBUF_NAMESPACE_ID::FieldMask& EditRelayPropsDtmfRequest::update_mask() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.EditRelayPropsDtmfRequest.update_mask)
  return _internal_update_mask();
}
inline void EditRelayPropsDtmfRequest::unsafe_arena_set_allocated_update_mask(
    ::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.update_mask_);
  }
  _impl_.update_mask_ = update_mask;
  if (update_mask) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.EditRelayPropsDtmfRequest.update_mask)
}
inline ::PROTOBUF_NAMESPACE_ID::FieldMask* EditRelayPropsDtmfRequest::release_update_mask() {
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::PROTOBUF_NAMESPACE_ID::FieldMask* temp = _impl_.update_mask_;
  _impl_.update_mask_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::PROTOBUF_NAMESPACE_ID::FieldMask* EditRelayPropsDtmfRequest::unsafe_arena_release_update_mask() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.EditRelayPropsDtmfRequest.update_mask)
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::PROTOBUF_NAMESPACE_ID::FieldMask* temp = _impl_.update_mask_;
  _impl_.update_mask_ = nullptr;
  return temp;
}
inline ::PROTOBUF_NAMESPACE_ID::FieldMask* EditRelayPropsDtmfRequest::_internal_mutable_update_mask() {
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.update_mask_ == nullptr) {
    auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FieldMask>(GetArenaForAllocation());
    _impl_.update_mask_ = p;
  }
  return _impl_.update_mask_;
}
inline ::PROTOBUF_NAMESPACE_ID::FieldMask* EditRelayPropsDtmfRequest::mutable_update_mask() {
  ::PROTOBUF_NAMESPACE_ID::FieldMask* _msg = _internal_mutable_update_mask();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.EditRelayPropsDtmfRequest.update_mask)
  return _msg;
}
inline void EditRelayPropsDtmfRequest::set_allocated_update_mask(::PROTOBUF_NAMESPACE_ID::FieldMask* update_mask) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.update_mask_);
  }
  if (update_mask) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(update_mask));
    if (message_arena != submessage_arena) {
      update_mask = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, update_mask, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.update_mask_ = update_mask;
  // @@protoc_insertion_point(field_set_allocated:deviceapis.device.v1.EditRelayPropsDtmfRequest.update_mask)
}

// -------------------------------------------------------------------

// EditRelayPropsOpenResponse_Error

// .deviceapis.device.v1.ValidationError validation = 1;
inline bool EditRelayPropsOpenResponse_Error::has_validation() const {
  return reason_case() == kValidation;
}
inline bool EditRelayPropsOpenResponse_Error::_internal_has_validation() const {
  return reason_case() == kValidation;
}
inline void EditRelayPropsOpenResponse_Error::set_has_validation() {
  _impl_._oneof_case_[0] = kValidation;
}
inline ::deviceapis::device::v1::ValidationError* EditRelayPropsOpenResponse_Error::release_validation() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.EditRelayPropsOpenResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::ValidationError& EditRelayPropsOpenResponse_Error::_internal_validation() const {
  return reason_case() == kValidation
      ? *_impl_.reason_.validation_
      : reinterpret_cast<::deviceapis::device::v1::ValidationError&>(::deviceapis::device::v1::_ValidationError_default_instance_);
}
inline const ::deviceapis::device::v1::ValidationError& EditRelayPropsOpenResponse_Error::validation() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.EditRelayPropsOpenResponse.Error.validation)
  return _internal_validation();
}
inline ::deviceapis::device::v1::ValidationError* EditRelayPropsOpenResponse_Error::unsafe_arena_release_validation() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.EditRelayPropsOpenResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void EditRelayPropsOpenResponse_Error::unsafe_arena_set_allocated_validation(::deviceapis::device::v1::ValidationError* validation) {
  clear_reason();
  if (validation) {
    set_has_validation();
    _impl_.reason_.validation_ = validation;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.EditRelayPropsOpenResponse.Error.validation)
}
inline ::deviceapis::device::v1::ValidationError* EditRelayPropsOpenResponse_Error::_internal_mutable_validation() {
  if (reason_case() != kValidation) {
    clear_reason();
    set_has_validation();
    _impl_.reason_.validation_ = CreateMaybeMessage< ::deviceapis::device::v1::ValidationError >(GetArenaForAllocation());
  }
  return _impl_.reason_.validation_;
}
inline ::deviceapis::device::v1::ValidationError* EditRelayPropsOpenResponse_Error::mutable_validation() {
  ::deviceapis::device::v1::ValidationError* _msg = _internal_mutable_validation();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.EditRelayPropsOpenResponse.Error.validation)
  return _msg;
}

inline bool EditRelayPropsOpenResponse_Error::has_reason() const {
  return reason_case() != REASON_NOT_SET;
}
inline void EditRelayPropsOpenResponse_Error::clear_has_reason() {
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}
inline EditRelayPropsOpenResponse_Error::ReasonCase EditRelayPropsOpenResponse_Error::reason_case() const {
  return EditRelayPropsOpenResponse_Error::ReasonCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// EditRelayPropsOpenResponse

// .deviceapis.device.v1.EditRelayPropsOpenResponse.Error error = 1;
inline bool EditRelayPropsOpenResponse::has_error() const {
  return type_case() == kError;
}
inline bool EditRelayPropsOpenResponse::_internal_has_error() const {
  return type_case() == kError;
}
inline void EditRelayPropsOpenResponse::set_has_error() {
  _impl_._oneof_case_[0] = kError;
}
inline void EditRelayPropsOpenResponse::clear_error() {
  if (type_case() == kError) {
    if (GetArenaForAllocation() == nullptr) {
      delete _impl_.type_.error_;
    }
    clear_has_type();
  }
}
inline ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* EditRelayPropsOpenResponse::release_error() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.EditRelayPropsOpenResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* temp = _impl_.type_.error_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error& EditRelayPropsOpenResponse::_internal_error() const {
  return type_case() == kError
      ? *_impl_.type_.error_
      : reinterpret_cast<::deviceapis::device::v1::EditRelayPropsOpenResponse_Error&>(::deviceapis::device::v1::_EditRelayPropsOpenResponse_Error_default_instance_);
}
inline const ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error& EditRelayPropsOpenResponse::error() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.EditRelayPropsOpenResponse.error)
  return _internal_error();
}
inline ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* EditRelayPropsOpenResponse::unsafe_arena_release_error() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.EditRelayPropsOpenResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* temp = _impl_.type_.error_;
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void EditRelayPropsOpenResponse::unsafe_arena_set_allocated_error(::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* error) {
  clear_type();
  if (error) {
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.EditRelayPropsOpenResponse.error)
}
inline ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* EditRelayPropsOpenResponse::_internal_mutable_error() {
  if (type_case() != kError) {
    clear_type();
    set_has_error();
    _impl_.type_.error_ = CreateMaybeMessage< ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error >(GetArenaForAllocation());
  }
  return _impl_.type_.error_;
}
inline ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* EditRelayPropsOpenResponse::mutable_error() {
  ::deviceapis::device::v1::EditRelayPropsOpenResponse_Error* _msg = _internal_mutable_error();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.EditRelayPropsOpenResponse.error)
  return _msg;
}

inline bool EditRelayPropsOpenResponse::has_type() const {
  return type_case() != TYPE_NOT_SET;
}
inline void EditRelayPropsOpenResponse::clear_has_type() {
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}
inline EditRelayPropsOpenResponse::TypeCase EditRelayPropsOpenResponse::type_case() const {
  return EditRelayPropsOpenResponse::TypeCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// EditRelayPropsDtmfResponse_Error

// .deviceapis.device.v1.ValidationError validation = 1;
inline bool EditRelayPropsDtmfResponse_Error::has_validation() const {
  return reason_case() == kValidation;
}
inline bool EditRelayPropsDtmfResponse_Error::_internal_has_validation() const {
  return reason_case() == kValidation;
}
inline void EditRelayPropsDtmfResponse_Error::set_has_validation() {
  _impl_._oneof_case_[0] = kValidation;
}
inline ::deviceapis::device::v1::ValidationError* EditRelayPropsDtmfResponse_Error::release_validation() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.EditRelayPropsDtmfResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::ValidationError& EditRelayPropsDtmfResponse_Error::_internal_validation() const {
  return reason_case() == kValidation
      ? *_impl_.reason_.validation_
      : reinterpret_cast<::deviceapis::device::v1::ValidationError&>(::deviceapis::device::v1::_ValidationError_default_instance_);
}
inline const ::deviceapis::device::v1::ValidationError& EditRelayPropsDtmfResponse_Error::validation() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.EditRelayPropsDtmfResponse.Error.validation)
  return _internal_validation();
}
inline ::deviceapis::device::v1::ValidationError* EditRelayPropsDtmfResponse_Error::unsafe_arena_release_validation() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.EditRelayPropsDtmfResponse.Error.validation)
  if (reason_case() == kValidation) {
    clear_has_reason();
    ::deviceapis::device::v1::ValidationError* temp = _impl_.reason_.validation_;
    _impl_.reason_.validation_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void EditRelayPropsDtmfResponse_Error::unsafe_arena_set_allocated_validation(::deviceapis::device::v1::ValidationError* validation) {
  clear_reason();
  if (validation) {
    set_has_validation();
    _impl_.reason_.validation_ = validation;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.EditRelayPropsDtmfResponse.Error.validation)
}
inline ::deviceapis::device::v1::ValidationError* EditRelayPropsDtmfResponse_Error::_internal_mutable_validation() {
  if (reason_case() != kValidation) {
    clear_reason();
    set_has_validation();
    _impl_.reason_.validation_ = CreateMaybeMessage< ::deviceapis::device::v1::ValidationError >(GetArenaForAllocation());
  }
  return _impl_.reason_.validation_;
}
inline ::deviceapis::device::v1::ValidationError* EditRelayPropsDtmfResponse_Error::mutable_validation() {
  ::deviceapis::device::v1::ValidationError* _msg = _internal_mutable_validation();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.EditRelayPropsDtmfResponse.Error.validation)
  return _msg;
}

inline bool EditRelayPropsDtmfResponse_Error::has_reason() const {
  return reason_case() != REASON_NOT_SET;
}
inline void EditRelayPropsDtmfResponse_Error::clear_has_reason() {
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}
inline EditRelayPropsDtmfResponse_Error::ReasonCase EditRelayPropsDtmfResponse_Error::reason_case() const {
  return EditRelayPropsDtmfResponse_Error::ReasonCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// EditRelayPropsDtmfResponse

// .deviceapis.device.v1.EditRelayPropsDtmfResponse.Error error = 1;
inline bool EditRelayPropsDtmfResponse::has_error() const {
  return type_case() == kError;
}
inline bool EditRelayPropsDtmfResponse::_internal_has_error() const {
  return type_case() == kError;
}
inline void EditRelayPropsDtmfResponse::set_has_error() {
  _impl_._oneof_case_[0] = kError;
}
inline void EditRelayPropsDtmfResponse::clear_error() {
  if (type_case() == kError) {
    if (GetArenaForAllocation() == nullptr) {
      delete _impl_.type_.error_;
    }
    clear_has_type();
  }
}
inline ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* EditRelayPropsDtmfResponse::release_error() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.EditRelayPropsDtmfResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* temp = _impl_.type_.error_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error& EditRelayPropsDtmfResponse::_internal_error() const {
  return type_case() == kError
      ? *_impl_.type_.error_
      : reinterpret_cast<::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error&>(::deviceapis::device::v1::_EditRelayPropsDtmfResponse_Error_default_instance_);
}
inline const ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error& EditRelayPropsDtmfResponse::error() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.EditRelayPropsDtmfResponse.error)
  return _internal_error();
}
inline ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* EditRelayPropsDtmfResponse::unsafe_arena_release_error() {
  // @@protoc_insertion_point(field_unsafe_arena_release:deviceapis.device.v1.EditRelayPropsDtmfResponse.error)
  if (type_case() == kError) {
    clear_has_type();
    ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* temp = _impl_.type_.error_;
    _impl_.type_.error_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void EditRelayPropsDtmfResponse::unsafe_arena_set_allocated_error(::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* error) {
  clear_type();
  if (error) {
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:deviceapis.device.v1.EditRelayPropsDtmfResponse.error)
}
inline ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* EditRelayPropsDtmfResponse::_internal_mutable_error() {
  if (type_case() != kError) {
    clear_type();
    set_has_error();
    _impl_.type_.error_ = CreateMaybeMessage< ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error >(GetArenaForAllocation());
  }
  return _impl_.type_.error_;
}
inline ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* EditRelayPropsDtmfResponse::mutable_error() {
  ::deviceapis::device::v1::EditRelayPropsDtmfResponse_Error* _msg = _internal_mutable_error();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.EditRelayPropsDtmfResponse.error)
  return _msg;
}

inline bool EditRelayPropsDtmfResponse::has_type() const {
  return type_case() != TYPE_NOT_SET;
}
inline void EditRelayPropsDtmfResponse::clear_has_type() {
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}
inline EditRelayPropsDtmfResponse::TypeCase EditRelayPropsDtmfResponse::type_case() const {
  return EditRelayPropsDtmfResponse::TypeCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// GetRelayStatusListRequest

// -------------------------------------------------------------------

// RelayState

// int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void RelayState::clear_relay_index() {
  _impl_.relay_index_ = 0;
}
inline ::int32_t RelayState::relay_index() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.RelayState.relay_index)
  return _internal_relay_index();
}
inline void RelayState::set_relay_index(::int32_t value) {
  _internal_set_relay_index(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.RelayState.relay_index)
}
inline ::int32_t RelayState::_internal_relay_index() const {
  return _impl_.relay_index_;
}
inline void RelayState::_internal_set_relay_index(::int32_t value) {
  ;
  _impl_.relay_index_ = value;
}

// .deviceapis.device.v1.RelayState.StateType state_type = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void RelayState::clear_state_type() {
  _impl_.state_type_ = 0;
}
inline ::deviceapis::device::v1::RelayState_StateType RelayState::state_type() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.RelayState.state_type)
  return _internal_state_type();
}
inline void RelayState::set_state_type(::deviceapis::device::v1::RelayState_StateType value) {
   _internal_set_state_type(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.RelayState.state_type)
}
inline ::deviceapis::device::v1::RelayState_StateType RelayState::_internal_state_type() const {
  return static_cast<::deviceapis::device::v1::RelayState_StateType>(_impl_.state_type_);
}
inline void RelayState::_internal_set_state_type(::deviceapis::device::v1::RelayState_StateType value) {
  ;
  _impl_.state_type_ = value;
}

// -------------------------------------------------------------------

// GetRelayStatusListResponse

// repeated .deviceapis.device.v1.RelayState data = 1;
inline int GetRelayStatusListResponse::_internal_data_size() const {
  return _impl_.data_.size();
}
inline int GetRelayStatusListResponse::data_size() const {
  return _internal_data_size();
}
inline void GetRelayStatusListResponse::clear_data() {
  _internal_mutable_data()->Clear();
}
inline ::deviceapis::device::v1::RelayState* GetRelayStatusListResponse::mutable_data(int index) {
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.GetRelayStatusListResponse.data)
  return _internal_mutable_data()->Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayState >*
GetRelayStatusListResponse::mutable_data() {
  // @@protoc_insertion_point(field_mutable_list:deviceapis.device.v1.GetRelayStatusListResponse.data)
  return _internal_mutable_data();
}
inline const ::deviceapis::device::v1::RelayState& GetRelayStatusListResponse::_internal_data(int index) const {
  return _internal_data().Get(index);
}
inline const ::deviceapis::device::v1::RelayState& GetRelayStatusListResponse::data(int index) const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.GetRelayStatusListResponse.data)
  return _internal_data(index);
}
inline ::deviceapis::device::v1::RelayState* GetRelayStatusListResponse::_internal_add_data() {
  return _internal_mutable_data()->Add();
}
inline ::deviceapis::device::v1::RelayState* GetRelayStatusListResponse::add_data() {
  ::deviceapis::device::v1::RelayState* _add = _internal_add_data();
  // @@protoc_insertion_point(field_add:deviceapis.device.v1.GetRelayStatusListResponse.data)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayState >&
GetRelayStatusListResponse::data() const {
  // @@protoc_insertion_point(field_list:deviceapis.device.v1.GetRelayStatusListResponse.data)
  return _internal_data();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayState>&
GetRelayStatusListResponse::_internal_data() const {
  return _impl_.data_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayState>*
GetRelayStatusListResponse::_internal_mutable_data() {
  return &_impl_.data_;
}

// -------------------------------------------------------------------

// GetRelayOpenListRequest

// -------------------------------------------------------------------

// GetRelayDtmfListRequest

// -------------------------------------------------------------------

// RelayOpen

// int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void RelayOpen::clear_relay_index() {
  _impl_.relay_index_ = 0;
}
inline ::int32_t RelayOpen::relay_index() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.RelayOpen.relay_index)
  return _internal_relay_index();
}
inline void RelayOpen::set_relay_index(::int32_t value) {
  _internal_set_relay_index(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.RelayOpen.relay_index)
}
inline ::int32_t RelayOpen::_internal_relay_index() const {
  return _impl_.relay_index_;
}
inline void RelayOpen::_internal_set_relay_index(::int32_t value) {
  ;
  _impl_.relay_index_ = value;
}

// .deviceapis.device.v1.RelayOpen.LockType lock_type = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void RelayOpen::clear_lock_type() {
  _impl_.lock_type_ = 0;
}
inline ::deviceapis::device::v1::RelayOpen_LockType RelayOpen::lock_type() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.RelayOpen.lock_type)
  return _internal_lock_type();
}
inline void RelayOpen::set_lock_type(::deviceapis::device::v1::RelayOpen_LockType value) {
   _internal_set_lock_type(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.RelayOpen.lock_type)
}
inline ::deviceapis::device::v1::RelayOpen_LockType RelayOpen::_internal_lock_type() const {
  return static_cast<::deviceapis::device::v1::RelayOpen_LockType>(_impl_.lock_type_);
}
inline void RelayOpen::_internal_set_lock_type(::deviceapis::device::v1::RelayOpen_LockType value) {
  ;
  _impl_.lock_type_ = value;
}

// int32 open_time_general = 3 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void RelayOpen::clear_open_time_general() {
  _impl_.open_time_general_ = 0;
}
inline ::int32_t RelayOpen::open_time_general() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.RelayOpen.open_time_general)
  return _internal_open_time_general();
}
inline void RelayOpen::set_open_time_general(::int32_t value) {
  _internal_set_open_time_general(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.RelayOpen.open_time_general)
}
inline ::int32_t RelayOpen::_internal_open_time_general() const {
  return _impl_.open_time_general_;
}
inline void RelayOpen::_internal_set_open_time_general(::int32_t value) {
  ;
  _impl_.open_time_general_ = value;
}

// int32 open_time_emergency = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void RelayOpen::clear_open_time_emergency() {
  _impl_.open_time_emergency_ = 0;
}
inline ::int32_t RelayOpen::open_time_emergency() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.RelayOpen.open_time_emergency)
  return _internal_open_time_emergency();
}
inline void RelayOpen::set_open_time_emergency(::int32_t value) {
  _internal_set_open_time_emergency(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.RelayOpen.open_time_emergency)
}
inline ::int32_t RelayOpen::_internal_open_time_emergency() const {
  return _impl_.open_time_emergency_;
}
inline void RelayOpen::_internal_set_open_time_emergency(::int32_t value) {
  ;
  _impl_.open_time_emergency_ = value;
}

// -------------------------------------------------------------------

// GetRelayOpenListResponse

// repeated .deviceapis.device.v1.RelayOpen data = 1;
inline int GetRelayOpenListResponse::_internal_data_size() const {
  return _impl_.data_.size();
}
inline int GetRelayOpenListResponse::data_size() const {
  return _internal_data_size();
}
inline void GetRelayOpenListResponse::clear_data() {
  _internal_mutable_data()->Clear();
}
inline ::deviceapis::device::v1::RelayOpen* GetRelayOpenListResponse::mutable_data(int index) {
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.GetRelayOpenListResponse.data)
  return _internal_mutable_data()->Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayOpen >*
GetRelayOpenListResponse::mutable_data() {
  // @@protoc_insertion_point(field_mutable_list:deviceapis.device.v1.GetRelayOpenListResponse.data)
  return _internal_mutable_data();
}
inline const ::deviceapis::device::v1::RelayOpen& GetRelayOpenListResponse::_internal_data(int index) const {
  return _internal_data().Get(index);
}
inline const ::deviceapis::device::v1::RelayOpen& GetRelayOpenListResponse::data(int index) const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.GetRelayOpenListResponse.data)
  return _internal_data(index);
}
inline ::deviceapis::device::v1::RelayOpen* GetRelayOpenListResponse::_internal_add_data() {
  return _internal_mutable_data()->Add();
}
inline ::deviceapis::device::v1::RelayOpen* GetRelayOpenListResponse::add_data() {
  ::deviceapis::device::v1::RelayOpen* _add = _internal_add_data();
  // @@protoc_insertion_point(field_add:deviceapis.device.v1.GetRelayOpenListResponse.data)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayOpen >&
GetRelayOpenListResponse::data() const {
  // @@protoc_insertion_point(field_list:deviceapis.device.v1.GetRelayOpenListResponse.data)
  return _internal_data();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayOpen>&
GetRelayOpenListResponse::_internal_data() const {
  return _impl_.data_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayOpen>*
GetRelayOpenListResponse::_internal_mutable_data() {
  return &_impl_.data_;
}

// -------------------------------------------------------------------

// RelayDtmf

// int32 relay_index = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void RelayDtmf::clear_relay_index() {
  _impl_.relay_index_ = 0;
}
inline ::int32_t RelayDtmf::relay_index() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.RelayDtmf.relay_index)
  return _internal_relay_index();
}
inline void RelayDtmf::set_relay_index(::int32_t value) {
  _internal_set_relay_index(value);
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.RelayDtmf.relay_index)
}
inline ::int32_t RelayDtmf::_internal_relay_index() const {
  return _impl_.relay_index_;
}
inline void RelayDtmf::_internal_set_relay_index(::int32_t value) {
  ;
  _impl_.relay_index_ = value;
}

// string dtmf_code = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
inline void RelayDtmf::clear_dtmf_code() {
  _impl_.dtmf_code_.ClearToEmpty();
}
inline const std::string& RelayDtmf::dtmf_code() const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.RelayDtmf.dtmf_code)
  return _internal_dtmf_code();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RelayDtmf::set_dtmf_code(Arg_&& arg,
                                                     Args_... args) {
  ;
  _impl_.dtmf_code_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:deviceapis.device.v1.RelayDtmf.dtmf_code)
}
inline std::string* RelayDtmf::mutable_dtmf_code() {
  std::string* _s = _internal_mutable_dtmf_code();
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.RelayDtmf.dtmf_code)
  return _s;
}
inline const std::string& RelayDtmf::_internal_dtmf_code() const {
  return _impl_.dtmf_code_.Get();
}
inline void RelayDtmf::_internal_set_dtmf_code(const std::string& value) {
  ;


  _impl_.dtmf_code_.Set(value, GetArenaForAllocation());
}
inline std::string* RelayDtmf::_internal_mutable_dtmf_code() {
  ;
  return _impl_.dtmf_code_.Mutable( GetArenaForAllocation());
}
inline std::string* RelayDtmf::release_dtmf_code() {
  // @@protoc_insertion_point(field_release:deviceapis.device.v1.RelayDtmf.dtmf_code)
  return _impl_.dtmf_code_.Release();
}
inline void RelayDtmf::set_allocated_dtmf_code(std::string* value) {
  _impl_.dtmf_code_.SetAllocated(value, GetArenaForAllocation());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.dtmf_code_.IsDefault()) {
          _impl_.dtmf_code_.Set("", GetArenaForAllocation());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:deviceapis.device.v1.RelayDtmf.dtmf_code)
}

// -------------------------------------------------------------------

// GetRelayDtmfListResponse

// repeated .deviceapis.device.v1.RelayDtmf data = 1;
inline int GetRelayDtmfListResponse::_internal_data_size() const {
  return _impl_.data_.size();
}
inline int GetRelayDtmfListResponse::data_size() const {
  return _internal_data_size();
}
inline void GetRelayDtmfListResponse::clear_data() {
  _internal_mutable_data()->Clear();
}
inline ::deviceapis::device::v1::RelayDtmf* GetRelayDtmfListResponse::mutable_data(int index) {
  // @@protoc_insertion_point(field_mutable:deviceapis.device.v1.GetRelayDtmfListResponse.data)
  return _internal_mutable_data()->Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayDtmf >*
GetRelayDtmfListResponse::mutable_data() {
  // @@protoc_insertion_point(field_mutable_list:deviceapis.device.v1.GetRelayDtmfListResponse.data)
  return _internal_mutable_data();
}
inline const ::deviceapis::device::v1::RelayDtmf& GetRelayDtmfListResponse::_internal_data(int index) const {
  return _internal_data().Get(index);
}
inline const ::deviceapis::device::v1::RelayDtmf& GetRelayDtmfListResponse::data(int index) const {
  // @@protoc_insertion_point(field_get:deviceapis.device.v1.GetRelayDtmfListResponse.data)
  return _internal_data(index);
}
inline ::deviceapis::device::v1::RelayDtmf* GetRelayDtmfListResponse::_internal_add_data() {
  return _internal_mutable_data()->Add();
}
inline ::deviceapis::device::v1::RelayDtmf* GetRelayDtmfListResponse::add_data() {
  ::deviceapis::device::v1::RelayDtmf* _add = _internal_add_data();
  // @@protoc_insertion_point(field_add:deviceapis.device.v1.GetRelayDtmfListResponse.data)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::deviceapis::device::v1::RelayDtmf >&
GetRelayDtmfListResponse::data() const {
  // @@protoc_insertion_point(field_list:deviceapis.device.v1.GetRelayDtmfListResponse.data)
  return _internal_data();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayDtmf>&
GetRelayDtmfListResponse::_internal_data() const {
  return _impl_.data_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::deviceapis::device::v1::RelayDtmf>*
GetRelayDtmfListResponse::_internal_mutable_data() {
  return &_impl_.data_;
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace v1
}  // namespace device
}  // namespace deviceapis


PROTOBUF_NAMESPACE_OPEN

template <>
struct is_proto_enum<::deviceapis::device::v1::RelayState_StateType> : std::true_type {};
template <>
struct is_proto_enum<::deviceapis::device::v1::RelayOpen_LockType> : std::true_type {};

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frelay_5fv1_2eproto_2epb_2eh
