// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: client/v3beta/dto/message/model/message_model.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto

#include <limits>
#include <string>


#include <herogoogle/protobuf/stubs/common.h>
#if GOOGLE_PROTOBUF_VERSION < 3018000
#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
#if 3018000 < 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


#include <herogoogle/protobuf/io/coded_stream.h>
#include <herogoogle/protobuf/arena.h>
#include <herogoogle/protobuf/arenastring.h>
#include <herogoogle/protobuf/generated_message_table_driven.h>
#include <herogoogle/protobuf/generated_message_util.h>
#include <herogoogle/protobuf/metadata_lite.h>
#include <herogoogle/protobuf/generated_message_reflection.h>
#include <herogoogle/protobuf/message.h>
#include <herogoogle/protobuf/repeated_field.h>  // IWYU pragma: export
#include <herogoogle/protobuf/extension_set.h>  // IWYU pragma: export
#include <herogoogle/protobuf/map.h>  // IWYU pragma: export
#include <herogoogle/protobuf/map_entry.h>
#include <herogoogle/protobuf/map_field_inl.h>
#include <herogoogle/protobuf/generated_enum_reflection.h>
#include <herogoogle/protobuf/unknown_field_set.h>
#include "client/v3beta/dto/user/model/user_model.pb.h"
// @@protoc_insertion_point(includes)

#define PROTOBUF_INTERNAL_EXPORT_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto {
  static const ::herogoogle::protobuf::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::herogoogle::protobuf::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::herogoogle::protobuf::internal::ParseTable schema[6]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::herogoogle::protobuf::internal::FieldMetadata field_metadata[];
  static const ::herogoogle::protobuf::internal::SerializationTable serialization_table[];
  static const ::herogoogle::protobuf::uint32 offsets[];
};
extern const ::herogoogle::protobuf::internal::DescriptorTable descriptor_table_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto;
namespace heroim {
namespace client {
namespace v3beta {
namespace dto {
namespace message {
namespace model {
class Message;
struct MessageDefaultTypeInternal;
extern MessageDefaultTypeInternal _Message_default_instance_;
class MessageSession;
struct MessageSessionDefaultTypeInternal;
extern MessageSessionDefaultTypeInternal _MessageSession_default_instance_;
class Message_PayloadEntry_DoNotUse;
struct Message_PayloadEntry_DoNotUseDefaultTypeInternal;
extern Message_PayloadEntry_DoNotUseDefaultTypeInternal _Message_PayloadEntry_DoNotUse_default_instance_;
class Message_SdkExtraEntry_DoNotUse;
struct Message_SdkExtraEntry_DoNotUseDefaultTypeInternal;
extern Message_SdkExtraEntry_DoNotUseDefaultTypeInternal _Message_SdkExtraEntry_DoNotUse_default_instance_;
class SessionKey;
struct SessionKeyDefaultTypeInternal;
extern SessionKeyDefaultTypeInternal _SessionKey_default_instance_;
class UserSessionSort;
struct UserSessionSortDefaultTypeInternal;
extern UserSessionSortDefaultTypeInternal _UserSessionSort_default_instance_;
}  // namespace model
}  // namespace message
}  // namespace dto
}  // namespace v3beta
}  // namespace client
}  // namespace heroim
PROTOBUF_NAMESPACE_OPEN
template<> ::heroim::client::v3beta::dto::message::model::Message* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::message::model::Message>(Arena*);
template<> ::heroim::client::v3beta::dto::message::model::MessageSession* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::message::model::MessageSession>(Arena*);
template<> ::heroim::client::v3beta::dto::message::model::Message_PayloadEntry_DoNotUse* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::message::model::Message_PayloadEntry_DoNotUse>(Arena*);
template<> ::heroim::client::v3beta::dto::message::model::Message_SdkExtraEntry_DoNotUse* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::message::model::Message_SdkExtraEntry_DoNotUse>(Arena*);
template<> ::heroim::client::v3beta::dto::message::model::SessionKey* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::message::model::SessionKey>(Arena*);
template<> ::heroim::client::v3beta::dto::message::model::UserSessionSort* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::message::model::UserSessionSort>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace heroim {
namespace client {
namespace v3beta {
namespace dto {
namespace message {
namespace model {

enum UserSessionSort_Status : int {
  UserSessionSort_Status_Disable = 0,
  UserSessionSort_Status_Enable = 1,
  UserSessionSort_Status_UserSessionSort_Status_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::herogoogle::protobuf::int32>::min(),
  UserSessionSort_Status_UserSessionSort_Status_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::herogoogle::protobuf::int32>::max()
};
bool UserSessionSort_Status_IsValid(int value);
constexpr UserSessionSort_Status UserSessionSort_Status_Status_MIN = UserSessionSort_Status_Disable;
constexpr UserSessionSort_Status UserSessionSort_Status_Status_MAX = UserSessionSort_Status_Enable;
constexpr int UserSessionSort_Status_Status_ARRAYSIZE = UserSessionSort_Status_Status_MAX + 1;

const ::herogoogle::protobuf::EnumDescriptor* UserSessionSort_Status_descriptor();
template<typename T>
inline const std::string& UserSessionSort_Status_Name(T enum_t_value) {
  static_assert(::std::is_same<T, UserSessionSort_Status>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function UserSessionSort_Status_Name.");
  return ::herogoogle::protobuf::internal::NameOfEnum(
    UserSessionSort_Status_descriptor(), enum_t_value);
}
inline bool UserSessionSort_Status_Parse(
    ::herogoogle::protobuf::ConstStringParam name, UserSessionSort_Status* value) {
  return ::herogoogle::protobuf::internal::ParseNamedEnum<UserSessionSort_Status>(
    UserSessionSort_Status_descriptor(), name, value);
}
enum SessionType : int {
  Person = 0,
  Group = 1,
  CustomChannel = 3,
  SessionType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::herogoogle::protobuf::int32>::min(),
  SessionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::herogoogle::protobuf::int32>::max()
};
bool SessionType_IsValid(int value);
constexpr SessionType SessionType_MIN = Person;
constexpr SessionType SessionType_MAX = CustomChannel;
constexpr int SessionType_ARRAYSIZE = SessionType_MAX + 1;

const ::herogoogle::protobuf::EnumDescriptor* SessionType_descriptor();
template<typename T>
inline const std::string& SessionType_Name(T enum_t_value) {
  static_assert(::std::is_same<T, SessionType>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function SessionType_Name.");
  return ::herogoogle::protobuf::internal::NameOfEnum(
    SessionType_descriptor(), enum_t_value);
}
inline bool SessionType_Parse(
    ::herogoogle::protobuf::ConstStringParam name, SessionType* value) {
  return ::herogoogle::protobuf::internal::ParseNamedEnum<SessionType>(
    SessionType_descriptor(), name, value);
}
enum MessageStatus : int {
  Normal = 0,
  Failed = -1,
  Revoked = 1,
  Deleted = 2,
  MessageStatus_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::herogoogle::protobuf::int32>::min(),
  MessageStatus_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::herogoogle::protobuf::int32>::max()
};
bool MessageStatus_IsValid(int value);
constexpr MessageStatus MessageStatus_MIN = Failed;
constexpr MessageStatus MessageStatus_MAX = Deleted;
constexpr int MessageStatus_ARRAYSIZE = MessageStatus_MAX + 1;

const ::herogoogle::protobuf::EnumDescriptor* MessageStatus_descriptor();
template<typename T>
inline const std::string& MessageStatus_Name(T enum_t_value) {
  static_assert(::std::is_same<T, MessageStatus>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function MessageStatus_Name.");
  return ::herogoogle::protobuf::internal::NameOfEnum(
    MessageStatus_descriptor(), enum_t_value);
}
inline bool MessageStatus_Parse(
    ::herogoogle::protobuf::ConstStringParam name, MessageStatus* value) {
  return ::herogoogle::protobuf::internal::ParseNamedEnum<MessageStatus>(
    MessageStatus_descriptor(), name, value);
}
// ===================================================================

class SessionKey final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.message.model.SessionKey) */ {
 public:
  inline SessionKey() : SessionKey(nullptr) {}
  ~SessionKey() override;
  explicit constexpr SessionKey(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline SessionKey& operator=(const SessionKey& from) {
    CopyFrom(from);
    return *this;
  }
  inline SessionKey& operator=(SessionKey&& 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;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SessionKey& default_instance() {
    return *internal_default_instance();
  }
  static inline const SessionKey* internal_default_instance() {
    return reinterpret_cast<const SessionKey*>(
               &_SessionKey_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(SessionKey& a, SessionKey& b) {
    a.Swap(&b);
  }
  inline void Swap(SessionKey* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SessionKey* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline SessionKey* New() const final {
    return new SessionKey();
  }

  SessionKey* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<SessionKey>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const SessionKey& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const SessionKey& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SessionKey* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.message.model.SessionKey";
  }
  protected:
  explicit SessionKey(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTargetIdFieldNumber = 1,
    kServerIdFieldNumber = 2,
    kSessionTypeFieldNumber = 3,
  };
  // string targetId = 1;
  void clear_targetid();
  const std::string& targetid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_targetid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_targetid();
  PROTOBUF_MUST_USE_RESULT std::string* release_targetid();
  void set_allocated_targetid(std::string* targetid);
  private:
  const std::string& _internal_targetid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_targetid(const std::string& value);
  std::string* _internal_mutable_targetid();
  public:

  // string serverId = 2;
  void clear_serverid();
  const std::string& serverid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_serverid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_serverid();
  PROTOBUF_MUST_USE_RESULT std::string* release_serverid();
  void set_allocated_serverid(std::string* serverid);
  private:
  const std::string& _internal_serverid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_serverid(const std::string& value);
  std::string* _internal_mutable_serverid();
  public:

  // .heroim.client.v3beta.dto.message.model.SessionType sessionType = 3;
  void clear_sessiontype();
  ::heroim::client::v3beta::dto::message::model::SessionType sessiontype() const;
  void set_sessiontype(::heroim::client::v3beta::dto::message::model::SessionType value);
  private:
  ::heroim::client::v3beta::dto::message::model::SessionType _internal_sessiontype() const;
  void _internal_set_sessiontype(::heroim::client::v3beta::dto::message::model::SessionType value);
  public:

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.message.model.SessionKey)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr targetid_;
  ::herogoogle::protobuf::internal::ArenaStringPtr serverid_;
  int sessiontype_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto;
};
// -------------------------------------------------------------------

class UserSessionSort final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.message.model.UserSessionSort) */ {
 public:
  inline UserSessionSort() : UserSessionSort(nullptr) {}
  ~UserSessionSort() override;
  explicit constexpr UserSessionSort(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline UserSessionSort& operator=(const UserSessionSort& from) {
    CopyFrom(from);
    return *this;
  }
  inline UserSessionSort& operator=(UserSessionSort&& 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;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const UserSessionSort& default_instance() {
    return *internal_default_instance();
  }
  static inline const UserSessionSort* internal_default_instance() {
    return reinterpret_cast<const UserSessionSort*>(
               &_UserSessionSort_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(UserSessionSort& a, UserSessionSort& b) {
    a.Swap(&b);
  }
  inline void Swap(UserSessionSort* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(UserSessionSort* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline UserSessionSort* New() const final {
    return new UserSessionSort();
  }

  UserSessionSort* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<UserSessionSort>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const UserSessionSort& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const UserSessionSort& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(UserSessionSort* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.message.model.UserSessionSort";
  }
  protected:
  explicit UserSessionSort(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

  typedef UserSessionSort_Status Status;
  static constexpr Status Disable =
    UserSessionSort_Status_Disable;
  static constexpr Status Enable =
    UserSessionSort_Status_Enable;
  static inline bool Status_IsValid(int value) {
    return UserSessionSort_Status_IsValid(value);
  }
  static constexpr Status Status_MIN =
    UserSessionSort_Status_Status_MIN;
  static constexpr Status Status_MAX =
    UserSessionSort_Status_Status_MAX;
  static constexpr int Status_ARRAYSIZE =
    UserSessionSort_Status_Status_ARRAYSIZE;
  static inline const ::herogoogle::protobuf::EnumDescriptor*
  Status_descriptor() {
    return UserSessionSort_Status_descriptor();
  }
  template<typename T>
  static inline const std::string& Status_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Status>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Status_Name.");
    return UserSessionSort_Status_Name(enum_t_value);
  }
  static inline bool Status_Parse(::herogoogle::protobuf::ConstStringParam name,
      Status* value) {
    return UserSessionSort_Status_Parse(name, value);
  }

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

  enum : int {
    kTimeFieldNumber = 2,
    kStatusFieldNumber = 1,
  };
  // int64 time = 2;
  void clear_time();
  ::herogoogle::protobuf::int64 time() const;
  void set_time(::herogoogle::protobuf::int64 value);
  private:
  ::herogoogle::protobuf::int64 _internal_time() const;
  void _internal_set_time(::herogoogle::protobuf::int64 value);
  public:

  // .heroim.client.v3beta.dto.message.model.UserSessionSort.Status status = 1;
  void clear_status();
  ::heroim::client::v3beta::dto::message::model::UserSessionSort_Status status() const;
  void set_status(::heroim::client::v3beta::dto::message::model::UserSessionSort_Status value);
  private:
  ::heroim::client::v3beta::dto::message::model::UserSessionSort_Status _internal_status() const;
  void _internal_set_status(::heroim::client::v3beta::dto::message::model::UserSessionSort_Status value);
  public:

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.message.model.UserSessionSort)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::int64 time_;
  int status_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto;
};
// -------------------------------------------------------------------

class MessageSession final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.message.model.MessageSession) */ {
 public:
  inline MessageSession() : MessageSession(nullptr) {}
  ~MessageSession() override;
  explicit constexpr MessageSession(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline MessageSession& operator=(const MessageSession& from) {
    CopyFrom(from);
    return *this;
  }
  inline MessageSession& operator=(MessageSession&& 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;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const MessageSession& default_instance() {
    return *internal_default_instance();
  }
  static inline const MessageSession* internal_default_instance() {
    return reinterpret_cast<const MessageSession*>(
               &_MessageSession_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(MessageSession& a, MessageSession& b) {
    a.Swap(&b);
  }
  inline void Swap(MessageSession* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MessageSession* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline MessageSession* New() const final {
    return new MessageSession();
  }

  MessageSession* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MessageSession>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const MessageSession& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const MessageSession& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(MessageSession* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.message.model.MessageSession";
  }
  protected:
  explicit MessageSession(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kChannelIdFieldNumber = 1,
    kSessionIdFieldNumber = 2,
    kTitleFieldNumber = 3,
    kPictureUrlFieldNumber = 4,
    kSubSessionTypeFieldNumber = 6,
    kSessionTypeFieldNumber = 5,
  };
  // string channelId = 1;
  void clear_channelid();
  const std::string& channelid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_channelid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_channelid();
  PROTOBUF_MUST_USE_RESULT std::string* release_channelid();
  void set_allocated_channelid(std::string* channelid);
  private:
  const std::string& _internal_channelid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_channelid(const std::string& value);
  std::string* _internal_mutable_channelid();
  public:

  // string sessionId = 2;
  void clear_sessionid();
  const std::string& sessionid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_sessionid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_sessionid();
  PROTOBUF_MUST_USE_RESULT std::string* release_sessionid();
  void set_allocated_sessionid(std::string* sessionid);
  private:
  const std::string& _internal_sessionid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_sessionid(const std::string& value);
  std::string* _internal_mutable_sessionid();
  public:

  // string title = 3;
  void clear_title();
  const std::string& title() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_title(ArgT0&& arg0, ArgT... args);
  std::string* mutable_title();
  PROTOBUF_MUST_USE_RESULT std::string* release_title();
  void set_allocated_title(std::string* title);
  private:
  const std::string& _internal_title() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_title(const std::string& value);
  std::string* _internal_mutable_title();
  public:

  // string pictureUrl = 4;
  void clear_pictureurl();
  const std::string& pictureurl() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_pictureurl(ArgT0&& arg0, ArgT... args);
  std::string* mutable_pictureurl();
  PROTOBUF_MUST_USE_RESULT std::string* release_pictureurl();
  void set_allocated_pictureurl(std::string* pictureurl);
  private:
  const std::string& _internal_pictureurl() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_pictureurl(const std::string& value);
  std::string* _internal_mutable_pictureurl();
  public:

  // string subSessionType = 6;
  void clear_subsessiontype();
  const std::string& subsessiontype() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_subsessiontype(ArgT0&& arg0, ArgT... args);
  std::string* mutable_subsessiontype();
  PROTOBUF_MUST_USE_RESULT std::string* release_subsessiontype();
  void set_allocated_subsessiontype(std::string* subsessiontype);
  private:
  const std::string& _internal_subsessiontype() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_subsessiontype(const std::string& value);
  std::string* _internal_mutable_subsessiontype();
  public:

  // int32 sessionType = 5;
  void clear_sessiontype();
  ::herogoogle::protobuf::int32 sessiontype() const;
  void set_sessiontype(::herogoogle::protobuf::int32 value);
  private:
  ::herogoogle::protobuf::int32 _internal_sessiontype() const;
  void _internal_set_sessiontype(::herogoogle::protobuf::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.message.model.MessageSession)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr channelid_;
  ::herogoogle::protobuf::internal::ArenaStringPtr sessionid_;
  ::herogoogle::protobuf::internal::ArenaStringPtr title_;
  ::herogoogle::protobuf::internal::ArenaStringPtr pictureurl_;
  ::herogoogle::protobuf::internal::ArenaStringPtr subsessiontype_;
  ::herogoogle::protobuf::int32 sessiontype_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto;
};
// -------------------------------------------------------------------

class Message_PayloadEntry_DoNotUse : public ::herogoogle::protobuf::internal::MapEntry<Message_PayloadEntry_DoNotUse, 
    std::string, std::string,
    ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING,
    ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING> {
public:
  typedef ::herogoogle::protobuf::internal::MapEntry<Message_PayloadEntry_DoNotUse, 
    std::string, std::string,
    ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING,
    ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING> SuperType;
  Message_PayloadEntry_DoNotUse();
  explicit constexpr Message_PayloadEntry_DoNotUse(
      ::herogoogle::protobuf::internal::ConstantInitialized);
  explicit Message_PayloadEntry_DoNotUse(::herogoogle::protobuf::Arena* arena);
  void MergeFrom(const Message_PayloadEntry_DoNotUse& other);
  static const Message_PayloadEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const Message_PayloadEntry_DoNotUse*>(&_Message_PayloadEntry_DoNotUse_default_instance_); }
  static bool ValidateKey(std::string* s) {
    return ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::herogoogle::protobuf::internal::WireFormatLite::PARSE, "heroim.client.v3beta.dto.message.model.Message.PayloadEntry.key");
 }
  static bool ValidateValue(std::string* s) {
    return ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::herogoogle::protobuf::internal::WireFormatLite::PARSE, "heroim.client.v3beta.dto.message.model.Message.PayloadEntry.value");
 }
  using ::herogoogle::protobuf::Message::MergeFrom;
  ::herogoogle::protobuf::Metadata GetMetadata() const final;
};

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

class Message_SdkExtraEntry_DoNotUse : public ::herogoogle::protobuf::internal::MapEntry<Message_SdkExtraEntry_DoNotUse, 
    std::string, std::string,
    ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING,
    ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING> {
public:
  typedef ::herogoogle::protobuf::internal::MapEntry<Message_SdkExtraEntry_DoNotUse, 
    std::string, std::string,
    ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING,
    ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING> SuperType;
  Message_SdkExtraEntry_DoNotUse();
  explicit constexpr Message_SdkExtraEntry_DoNotUse(
      ::herogoogle::protobuf::internal::ConstantInitialized);
  explicit Message_SdkExtraEntry_DoNotUse(::herogoogle::protobuf::Arena* arena);
  void MergeFrom(const Message_SdkExtraEntry_DoNotUse& other);
  static const Message_SdkExtraEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const Message_SdkExtraEntry_DoNotUse*>(&_Message_SdkExtraEntry_DoNotUse_default_instance_); }
  static bool ValidateKey(std::string* s) {
    return ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::herogoogle::protobuf::internal::WireFormatLite::PARSE, "heroim.client.v3beta.dto.message.model.Message.SdkExtraEntry.key");
 }
  static bool ValidateValue(std::string* s) {
    return ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::herogoogle::protobuf::internal::WireFormatLite::PARSE, "heroim.client.v3beta.dto.message.model.Message.SdkExtraEntry.value");
 }
  using ::herogoogle::protobuf::Message::MergeFrom;
  ::herogoogle::protobuf::Metadata GetMetadata() const final;
};

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

class Message final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.message.model.Message) */ {
 public:
  inline Message() : Message(nullptr) {}
  ~Message() override;
  explicit constexpr Message(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline Message& operator=(const Message& from) {
    CopyFrom(from);
    return *this;
  }
  inline Message& operator=(Message&& 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;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Message& default_instance() {
    return *internal_default_instance();
  }
  static inline const Message* internal_default_instance() {
    return reinterpret_cast<const Message*>(
               &_Message_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(Message& a, Message& b) {
    a.Swap(&b);
  }
  inline void Swap(Message* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Message* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline Message* New() const final {
    return new Message();
  }

  Message* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<Message>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const Message& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const Message& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(Message* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.message.model.Message";
  }
  protected:
  explicit Message(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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


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

  enum : int {
    kPayloadFieldNumber = 10,
    kSdkExtraFieldNumber = 11,
    kTargetIdFieldNumber = 2,
    kMsgIdFieldNumber = 4,
    kClientMsgIdFieldNumber = 5,
    kMsgTypeFieldNumber = 6,
    kContentFieldNumber = 7,
    kPrevMsgIdFieldNumber = 13,
    kSessionFieldNumber = 3,
    kFromUserFieldNumber = 9,
    kSessionKeyFieldNumber = 15,
    kSessionTypeFieldNumber = 1,
    kStatusFieldNumber = 12,
    kTimeFieldNumber = 8,
    kSequenceFieldNumber = 14,
    kUpdateTimeFieldNumber = 16,
  };
  // map<string, string> payload = 10;
  int payload_size() const;
  private:
  int _internal_payload_size() const;
  public:
  void clear_payload();
  private:
  const ::herogoogle::protobuf::Map< std::string, std::string >&
      _internal_payload() const;
  ::herogoogle::protobuf::Map< std::string, std::string >*
      _internal_mutable_payload();
  public:
  const ::herogoogle::protobuf::Map< std::string, std::string >&
      payload() const;
  ::herogoogle::protobuf::Map< std::string, std::string >*
      mutable_payload();

  // map<string, string> sdkExtra = 11;
  int sdkextra_size() const;
  private:
  int _internal_sdkextra_size() const;
  public:
  void clear_sdkextra();
  private:
  const ::herogoogle::protobuf::Map< std::string, std::string >&
      _internal_sdkextra() const;
  ::herogoogle::protobuf::Map< std::string, std::string >*
      _internal_mutable_sdkextra();
  public:
  const ::herogoogle::protobuf::Map< std::string, std::string >&
      sdkextra() const;
  ::herogoogle::protobuf::Map< std::string, std::string >*
      mutable_sdkextra();

  // string targetId = 2;
  void clear_targetid();
  const std::string& targetid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_targetid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_targetid();
  PROTOBUF_MUST_USE_RESULT std::string* release_targetid();
  void set_allocated_targetid(std::string* targetid);
  private:
  const std::string& _internal_targetid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_targetid(const std::string& value);
  std::string* _internal_mutable_targetid();
  public:

  // string msgId = 4;
  void clear_msgid();
  const std::string& msgid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_msgid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_msgid();
  PROTOBUF_MUST_USE_RESULT std::string* release_msgid();
  void set_allocated_msgid(std::string* msgid);
  private:
  const std::string& _internal_msgid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_msgid(const std::string& value);
  std::string* _internal_mutable_msgid();
  public:

  // string clientMsgId = 5;
  void clear_clientmsgid();
  const std::string& clientmsgid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_clientmsgid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_clientmsgid();
  PROTOBUF_MUST_USE_RESULT std::string* release_clientmsgid();
  void set_allocated_clientmsgid(std::string* clientmsgid);
  private:
  const std::string& _internal_clientmsgid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_clientmsgid(const std::string& value);
  std::string* _internal_mutable_clientmsgid();
  public:

  // string msgType = 6;
  void clear_msgtype();
  const std::string& msgtype() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_msgtype(ArgT0&& arg0, ArgT... args);
  std::string* mutable_msgtype();
  PROTOBUF_MUST_USE_RESULT std::string* release_msgtype();
  void set_allocated_msgtype(std::string* msgtype);
  private:
  const std::string& _internal_msgtype() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_msgtype(const std::string& value);
  std::string* _internal_mutable_msgtype();
  public:

  // string content = 7;
  void clear_content();
  const std::string& content() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_content(ArgT0&& arg0, ArgT... args);
  std::string* mutable_content();
  PROTOBUF_MUST_USE_RESULT std::string* release_content();
  void set_allocated_content(std::string* content);
  private:
  const std::string& _internal_content() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_content(const std::string& value);
  std::string* _internal_mutable_content();
  public:

  // string prevMsgId = 13;
  void clear_prevmsgid();
  const std::string& prevmsgid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_prevmsgid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_prevmsgid();
  PROTOBUF_MUST_USE_RESULT std::string* release_prevmsgid();
  void set_allocated_prevmsgid(std::string* prevmsgid);
  private:
  const std::string& _internal_prevmsgid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_prevmsgid(const std::string& value);
  std::string* _internal_mutable_prevmsgid();
  public:

  // .heroim.client.v3beta.dto.message.model.MessageSession session = 3;
  bool has_session() const;
  private:
  bool _internal_has_session() const;
  public:
  void clear_session();
  const ::heroim::client::v3beta::dto::message::model::MessageSession& session() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::message::model::MessageSession* release_session();
  ::heroim::client::v3beta::dto::message::model::MessageSession* mutable_session();
  void set_allocated_session(::heroim::client::v3beta::dto::message::model::MessageSession* session);
  private:
  const ::heroim::client::v3beta::dto::message::model::MessageSession& _internal_session() const;
  ::heroim::client::v3beta::dto::message::model::MessageSession* _internal_mutable_session();
  public:
  void unsafe_arena_set_allocated_session(
      ::heroim::client::v3beta::dto::message::model::MessageSession* session);
  ::heroim::client::v3beta::dto::message::model::MessageSession* unsafe_arena_release_session();

  // .heroim.client.v3beta.dto.user.model.UserSimple fromUser = 9;
  bool has_fromuser() const;
  private:
  bool _internal_has_fromuser() const;
  public:
  void clear_fromuser();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& fromuser() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_fromuser();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_fromuser();
  void set_allocated_fromuser(::heroim::client::v3beta::dto::user::model::UserSimple* fromuser);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_fromuser() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_fromuser();
  public:
  void unsafe_arena_set_allocated_fromuser(
      ::heroim::client::v3beta::dto::user::model::UserSimple* fromuser);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_fromuser();

  // .heroim.client.v3beta.dto.message.model.SessionKey sessionKey = 15;
  bool has_sessionkey() const;
  private:
  bool _internal_has_sessionkey() const;
  public:
  void clear_sessionkey();
  const ::heroim::client::v3beta::dto::message::model::SessionKey& sessionkey() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::message::model::SessionKey* release_sessionkey();
  ::heroim::client::v3beta::dto::message::model::SessionKey* mutable_sessionkey();
  void set_allocated_sessionkey(::heroim::client::v3beta::dto::message::model::SessionKey* sessionkey);
  private:
  const ::heroim::client::v3beta::dto::message::model::SessionKey& _internal_sessionkey() const;
  ::heroim::client::v3beta::dto::message::model::SessionKey* _internal_mutable_sessionkey();
  public:
  void unsafe_arena_set_allocated_sessionkey(
      ::heroim::client::v3beta::dto::message::model::SessionKey* sessionkey);
  ::heroim::client::v3beta::dto::message::model::SessionKey* unsafe_arena_release_sessionkey();

  // int32 sessionType = 1;
  void clear_sessiontype();
  ::herogoogle::protobuf::int32 sessiontype() const;
  void set_sessiontype(::herogoogle::protobuf::int32 value);
  private:
  ::herogoogle::protobuf::int32 _internal_sessiontype() const;
  void _internal_set_sessiontype(::herogoogle::protobuf::int32 value);
  public:

  // int32 status = 12;
  void clear_status();
  ::herogoogle::protobuf::int32 status() const;
  void set_status(::herogoogle::protobuf::int32 value);
  private:
  ::herogoogle::protobuf::int32 _internal_status() const;
  void _internal_set_status(::herogoogle::protobuf::int32 value);
  public:

  // int64 time = 8;
  void clear_time();
  ::herogoogle::protobuf::int64 time() const;
  void set_time(::herogoogle::protobuf::int64 value);
  private:
  ::herogoogle::protobuf::int64 _internal_time() const;
  void _internal_set_time(::herogoogle::protobuf::int64 value);
  public:

  // int64 sequence = 14;
  void clear_sequence();
  ::herogoogle::protobuf::int64 sequence() const;
  void set_sequence(::herogoogle::protobuf::int64 value);
  private:
  ::herogoogle::protobuf::int64 _internal_sequence() const;
  void _internal_set_sequence(::herogoogle::protobuf::int64 value);
  public:

  // int64 updateTime = 16;
  void clear_updatetime();
  ::herogoogle::protobuf::int64 updatetime() const;
  void set_updatetime(::herogoogle::protobuf::int64 value);
  private:
  ::herogoogle::protobuf::int64 _internal_updatetime() const;
  void _internal_set_updatetime(::herogoogle::protobuf::int64 value);
  public:

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.message.model.Message)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::MapField<
      Message_PayloadEntry_DoNotUse,
      std::string, std::string,
      ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING> payload_;
  ::herogoogle::protobuf::internal::MapField<
      Message_SdkExtraEntry_DoNotUse,
      std::string, std::string,
      ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::herogoogle::protobuf::internal::WireFormatLite::TYPE_STRING> sdkextra_;
  ::herogoogle::protobuf::internal::ArenaStringPtr targetid_;
  ::herogoogle::protobuf::internal::ArenaStringPtr msgid_;
  ::herogoogle::protobuf::internal::ArenaStringPtr clientmsgid_;
  ::herogoogle::protobuf::internal::ArenaStringPtr msgtype_;
  ::herogoogle::protobuf::internal::ArenaStringPtr content_;
  ::herogoogle::protobuf::internal::ArenaStringPtr prevmsgid_;
  ::heroim::client::v3beta::dto::message::model::MessageSession* session_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* fromuser_;
  ::heroim::client::v3beta::dto::message::model::SessionKey* sessionkey_;
  ::herogoogle::protobuf::int32 sessiontype_;
  ::herogoogle::protobuf::int32 status_;
  ::herogoogle::protobuf::int64 time_;
  ::herogoogle::protobuf::int64 sequence_;
  ::herogoogle::protobuf::int64 updatetime_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto;
};
// ===================================================================


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

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

// string serverId = 2;
inline void SessionKey::clear_serverid() {
  serverid_.ClearToEmpty();
}
inline const std::string& SessionKey::serverid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.SessionKey.serverId)
  return _internal_serverid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void SessionKey::set_serverid(ArgT0&& arg0, ArgT... args) {
 
 serverid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.SessionKey.serverId)
}
inline std::string* SessionKey::mutable_serverid() {
  std::string* _s = _internal_mutable_serverid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.SessionKey.serverId)
  return _s;
}
inline const std::string& SessionKey::_internal_serverid() const {
  return serverid_.Get();
}
inline void SessionKey::_internal_set_serverid(const std::string& value) {
  
  serverid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* SessionKey::_internal_mutable_serverid() {
  
  return serverid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* SessionKey::release_serverid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.SessionKey.serverId)
  return serverid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void SessionKey::set_allocated_serverid(std::string* serverid) {
  if (serverid != nullptr) {
    
  } else {
    
  }
  serverid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), serverid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.SessionKey.serverId)
}

// string targetId = 1;
inline void SessionKey::clear_targetid() {
  targetid_.ClearToEmpty();
}
inline const std::string& SessionKey::targetid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.SessionKey.targetId)
  return _internal_targetid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void SessionKey::set_targetid(ArgT0&& arg0, ArgT... args) {
 
 targetid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.SessionKey.targetId)
}
inline std::string* SessionKey::mutable_targetid() {
  std::string* _s = _internal_mutable_targetid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.SessionKey.targetId)
  return _s;
}
inline const std::string& SessionKey::_internal_targetid() const {
  return targetid_.Get();
}
inline void SessionKey::_internal_set_targetid(const std::string& value) {
  
  targetid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* SessionKey::_internal_mutable_targetid() {
  
  return targetid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* SessionKey::release_targetid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.SessionKey.targetId)
  return targetid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void SessionKey::set_allocated_targetid(std::string* targetid) {
  if (targetid != nullptr) {
    
  } else {
    
  }
  targetid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), targetid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.SessionKey.targetId)
}

// .heroim.client.v3beta.dto.message.model.SessionType sessionType = 3;
inline void SessionKey::clear_sessiontype() {
  sessiontype_ = 0;
}
inline ::heroim::client::v3beta::dto::message::model::SessionType SessionKey::_internal_sessiontype() const {
  return static_cast< ::heroim::client::v3beta::dto::message::model::SessionType >(sessiontype_);
}
inline ::heroim::client::v3beta::dto::message::model::SessionType SessionKey::sessiontype() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.SessionKey.sessionType)
  return _internal_sessiontype();
}
inline void SessionKey::_internal_set_sessiontype(::heroim::client::v3beta::dto::message::model::SessionType value) {
  
  sessiontype_ = value;
}
inline void SessionKey::set_sessiontype(::heroim::client::v3beta::dto::message::model::SessionType value) {
  _internal_set_sessiontype(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.SessionKey.sessionType)
}

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

// UserSessionSort

// .heroim.client.v3beta.dto.message.model.UserSessionSort.Status status = 1;
inline void UserSessionSort::clear_status() {
  status_ = 0;
}
inline ::heroim::client::v3beta::dto::message::model::UserSessionSort_Status UserSessionSort::_internal_status() const {
  return static_cast< ::heroim::client::v3beta::dto::message::model::UserSessionSort_Status >(status_);
}
inline ::heroim::client::v3beta::dto::message::model::UserSessionSort_Status UserSessionSort::status() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.UserSessionSort.status)
  return _internal_status();
}
inline void UserSessionSort::_internal_set_status(::heroim::client::v3beta::dto::message::model::UserSessionSort_Status value) {
  
  status_ = value;
}
inline void UserSessionSort::set_status(::heroim::client::v3beta::dto::message::model::UserSessionSort_Status value) {
  _internal_set_status(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.UserSessionSort.status)
}

// int64 time = 2;
inline void UserSessionSort::clear_time() {
  time_ = int64_t{0};
}
inline ::herogoogle::protobuf::int64 UserSessionSort::_internal_time() const {
  return time_;
}
inline ::herogoogle::protobuf::int64 UserSessionSort::time() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.UserSessionSort.time)
  return _internal_time();
}
inline void UserSessionSort::_internal_set_time(::herogoogle::protobuf::int64 value) {
  
  time_ = value;
}
inline void UserSessionSort::set_time(::herogoogle::protobuf::int64 value) {
  _internal_set_time(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.UserSessionSort.time)
}

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

// MessageSession

// string channelId = 1;
inline void MessageSession::clear_channelid() {
  channelid_.ClearToEmpty();
}
inline const std::string& MessageSession::channelid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.MessageSession.channelId)
  return _internal_channelid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void MessageSession::set_channelid(ArgT0&& arg0, ArgT... args) {
 
 channelid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.MessageSession.channelId)
}
inline std::string* MessageSession::mutable_channelid() {
  std::string* _s = _internal_mutable_channelid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.MessageSession.channelId)
  return _s;
}
inline const std::string& MessageSession::_internal_channelid() const {
  return channelid_.Get();
}
inline void MessageSession::_internal_set_channelid(const std::string& value) {
  
  channelid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* MessageSession::_internal_mutable_channelid() {
  
  return channelid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* MessageSession::release_channelid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.MessageSession.channelId)
  return channelid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void MessageSession::set_allocated_channelid(std::string* channelid) {
  if (channelid != nullptr) {
    
  } else {
    
  }
  channelid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), channelid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.MessageSession.channelId)
}

// string sessionId = 2;
inline void MessageSession::clear_sessionid() {
  sessionid_.ClearToEmpty();
}
inline const std::string& MessageSession::sessionid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.MessageSession.sessionId)
  return _internal_sessionid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void MessageSession::set_sessionid(ArgT0&& arg0, ArgT... args) {
 
 sessionid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.MessageSession.sessionId)
}
inline std::string* MessageSession::mutable_sessionid() {
  std::string* _s = _internal_mutable_sessionid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.MessageSession.sessionId)
  return _s;
}
inline const std::string& MessageSession::_internal_sessionid() const {
  return sessionid_.Get();
}
inline void MessageSession::_internal_set_sessionid(const std::string& value) {
  
  sessionid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* MessageSession::_internal_mutable_sessionid() {
  
  return sessionid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* MessageSession::release_sessionid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.MessageSession.sessionId)
  return sessionid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void MessageSession::set_allocated_sessionid(std::string* sessionid) {
  if (sessionid != nullptr) {
    
  } else {
    
  }
  sessionid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), sessionid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.MessageSession.sessionId)
}

// string title = 3;
inline void MessageSession::clear_title() {
  title_.ClearToEmpty();
}
inline const std::string& MessageSession::title() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.MessageSession.title)
  return _internal_title();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void MessageSession::set_title(ArgT0&& arg0, ArgT... args) {
 
 title_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.MessageSession.title)
}
inline std::string* MessageSession::mutable_title() {
  std::string* _s = _internal_mutable_title();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.MessageSession.title)
  return _s;
}
inline const std::string& MessageSession::_internal_title() const {
  return title_.Get();
}
inline void MessageSession::_internal_set_title(const std::string& value) {
  
  title_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* MessageSession::_internal_mutable_title() {
  
  return title_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* MessageSession::release_title() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.MessageSession.title)
  return title_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void MessageSession::set_allocated_title(std::string* title) {
  if (title != nullptr) {
    
  } else {
    
  }
  title_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), title,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.MessageSession.title)
}

// string pictureUrl = 4;
inline void MessageSession::clear_pictureurl() {
  pictureurl_.ClearToEmpty();
}
inline const std::string& MessageSession::pictureurl() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.MessageSession.pictureUrl)
  return _internal_pictureurl();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void MessageSession::set_pictureurl(ArgT0&& arg0, ArgT... args) {
 
 pictureurl_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.MessageSession.pictureUrl)
}
inline std::string* MessageSession::mutable_pictureurl() {
  std::string* _s = _internal_mutable_pictureurl();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.MessageSession.pictureUrl)
  return _s;
}
inline const std::string& MessageSession::_internal_pictureurl() const {
  return pictureurl_.Get();
}
inline void MessageSession::_internal_set_pictureurl(const std::string& value) {
  
  pictureurl_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* MessageSession::_internal_mutable_pictureurl() {
  
  return pictureurl_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* MessageSession::release_pictureurl() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.MessageSession.pictureUrl)
  return pictureurl_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void MessageSession::set_allocated_pictureurl(std::string* pictureurl) {
  if (pictureurl != nullptr) {
    
  } else {
    
  }
  pictureurl_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), pictureurl,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.MessageSession.pictureUrl)
}

// int32 sessionType = 5;
inline void MessageSession::clear_sessiontype() {
  sessiontype_ = 0;
}
inline ::herogoogle::protobuf::int32 MessageSession::_internal_sessiontype() const {
  return sessiontype_;
}
inline ::herogoogle::protobuf::int32 MessageSession::sessiontype() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.MessageSession.sessionType)
  return _internal_sessiontype();
}
inline void MessageSession::_internal_set_sessiontype(::herogoogle::protobuf::int32 value) {
  
  sessiontype_ = value;
}
inline void MessageSession::set_sessiontype(::herogoogle::protobuf::int32 value) {
  _internal_set_sessiontype(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.MessageSession.sessionType)
}

// string subSessionType = 6;
inline void MessageSession::clear_subsessiontype() {
  subsessiontype_.ClearToEmpty();
}
inline const std::string& MessageSession::subsessiontype() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.MessageSession.subSessionType)
  return _internal_subsessiontype();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void MessageSession::set_subsessiontype(ArgT0&& arg0, ArgT... args) {
 
 subsessiontype_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.MessageSession.subSessionType)
}
inline std::string* MessageSession::mutable_subsessiontype() {
  std::string* _s = _internal_mutable_subsessiontype();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.MessageSession.subSessionType)
  return _s;
}
inline const std::string& MessageSession::_internal_subsessiontype() const {
  return subsessiontype_.Get();
}
inline void MessageSession::_internal_set_subsessiontype(const std::string& value) {
  
  subsessiontype_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* MessageSession::_internal_mutable_subsessiontype() {
  
  return subsessiontype_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* MessageSession::release_subsessiontype() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.MessageSession.subSessionType)
  return subsessiontype_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void MessageSession::set_allocated_subsessiontype(std::string* subsessiontype) {
  if (subsessiontype != nullptr) {
    
  } else {
    
  }
  subsessiontype_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), subsessiontype,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.MessageSession.subSessionType)
}

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

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

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

// Message

// int32 sessionType = 1;
inline void Message::clear_sessiontype() {
  sessiontype_ = 0;
}
inline ::herogoogle::protobuf::int32 Message::_internal_sessiontype() const {
  return sessiontype_;
}
inline ::herogoogle::protobuf::int32 Message::sessiontype() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.sessionType)
  return _internal_sessiontype();
}
inline void Message::_internal_set_sessiontype(::herogoogle::protobuf::int32 value) {
  
  sessiontype_ = value;
}
inline void Message::set_sessiontype(::herogoogle::protobuf::int32 value) {
  _internal_set_sessiontype(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.sessionType)
}

// string targetId = 2;
inline void Message::clear_targetid() {
  targetid_.ClearToEmpty();
}
inline const std::string& Message::targetid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.targetId)
  return _internal_targetid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void Message::set_targetid(ArgT0&& arg0, ArgT... args) {
 
 targetid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.targetId)
}
inline std::string* Message::mutable_targetid() {
  std::string* _s = _internal_mutable_targetid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.Message.targetId)
  return _s;
}
inline const std::string& Message::_internal_targetid() const {
  return targetid_.Get();
}
inline void Message::_internal_set_targetid(const std::string& value) {
  
  targetid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* Message::_internal_mutable_targetid() {
  
  return targetid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* Message::release_targetid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.Message.targetId)
  return targetid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void Message::set_allocated_targetid(std::string* targetid) {
  if (targetid != nullptr) {
    
  } else {
    
  }
  targetid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), targetid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.Message.targetId)
}

// .heroim.client.v3beta.dto.message.model.MessageSession session = 3;
inline bool Message::_internal_has_session() const {
  return this != internal_default_instance() && session_ != nullptr;
}
inline bool Message::has_session() const {
  return _internal_has_session();
}
inline void Message::clear_session() {
  if (GetArenaForAllocation() == nullptr && session_ != nullptr) {
    delete session_;
  }
  session_ = nullptr;
}
inline const ::heroim::client::v3beta::dto::message::model::MessageSession& Message::_internal_session() const {
  const ::heroim::client::v3beta::dto::message::model::MessageSession* p = session_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::message::model::MessageSession&>(
      ::heroim::client::v3beta::dto::message::model::_MessageSession_default_instance_);
}
inline const ::heroim::client::v3beta::dto::message::model::MessageSession& Message::session() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.session)
  return _internal_session();
}
inline void Message::unsafe_arena_set_allocated_session(
    ::heroim::client::v3beta::dto::message::model::MessageSession* session) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(session_);
  }
  session_ = session;
  if (session) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.message.model.Message.session)
}
inline ::heroim::client::v3beta::dto::message::model::MessageSession* Message::release_session() {
  
  ::heroim::client::v3beta::dto::message::model::MessageSession* temp = session_;
  session_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::message::model::MessageSession* Message::unsafe_arena_release_session() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.Message.session)
  
  ::heroim::client::v3beta::dto::message::model::MessageSession* temp = session_;
  session_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::message::model::MessageSession* Message::_internal_mutable_session() {
  
  if (session_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::message::model::MessageSession>(GetArenaForAllocation());
    session_ = p;
  }
  return session_;
}
inline ::heroim::client::v3beta::dto::message::model::MessageSession* Message::mutable_session() {
  ::heroim::client::v3beta::dto::message::model::MessageSession* _msg = _internal_mutable_session();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.Message.session)
  return _msg;
}
inline void Message::set_allocated_session(::heroim::client::v3beta::dto::message::model::MessageSession* session) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete session_;
  }
  if (session) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<::heroim::client::v3beta::dto::message::model::MessageSession>::GetOwningArena(session);
    if (message_arena != submessage_arena) {
      session = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, session, submessage_arena);
    }
    
  } else {
    
  }
  session_ = session;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.Message.session)
}

// string msgId = 4;
inline void Message::clear_msgid() {
  msgid_.ClearToEmpty();
}
inline const std::string& Message::msgid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.msgId)
  return _internal_msgid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void Message::set_msgid(ArgT0&& arg0, ArgT... args) {
 
 msgid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.msgId)
}
inline std::string* Message::mutable_msgid() {
  std::string* _s = _internal_mutable_msgid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.Message.msgId)
  return _s;
}
inline const std::string& Message::_internal_msgid() const {
  return msgid_.Get();
}
inline void Message::_internal_set_msgid(const std::string& value) {
  
  msgid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* Message::_internal_mutable_msgid() {
  
  return msgid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* Message::release_msgid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.Message.msgId)
  return msgid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void Message::set_allocated_msgid(std::string* msgid) {
  if (msgid != nullptr) {
    
  } else {
    
  }
  msgid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), msgid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.Message.msgId)
}

// string clientMsgId = 5;
inline void Message::clear_clientmsgid() {
  clientmsgid_.ClearToEmpty();
}
inline const std::string& Message::clientmsgid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.clientMsgId)
  return _internal_clientmsgid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void Message::set_clientmsgid(ArgT0&& arg0, ArgT... args) {
 
 clientmsgid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.clientMsgId)
}
inline std::string* Message::mutable_clientmsgid() {
  std::string* _s = _internal_mutable_clientmsgid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.Message.clientMsgId)
  return _s;
}
inline const std::string& Message::_internal_clientmsgid() const {
  return clientmsgid_.Get();
}
inline void Message::_internal_set_clientmsgid(const std::string& value) {
  
  clientmsgid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* Message::_internal_mutable_clientmsgid() {
  
  return clientmsgid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* Message::release_clientmsgid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.Message.clientMsgId)
  return clientmsgid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void Message::set_allocated_clientmsgid(std::string* clientmsgid) {
  if (clientmsgid != nullptr) {
    
  } else {
    
  }
  clientmsgid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), clientmsgid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.Message.clientMsgId)
}

// string msgType = 6;
inline void Message::clear_msgtype() {
  msgtype_.ClearToEmpty();
}
inline const std::string& Message::msgtype() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.msgType)
  return _internal_msgtype();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void Message::set_msgtype(ArgT0&& arg0, ArgT... args) {
 
 msgtype_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.msgType)
}
inline std::string* Message::mutable_msgtype() {
  std::string* _s = _internal_mutable_msgtype();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.Message.msgType)
  return _s;
}
inline const std::string& Message::_internal_msgtype() const {
  return msgtype_.Get();
}
inline void Message::_internal_set_msgtype(const std::string& value) {
  
  msgtype_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* Message::_internal_mutable_msgtype() {
  
  return msgtype_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* Message::release_msgtype() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.Message.msgType)
  return msgtype_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void Message::set_allocated_msgtype(std::string* msgtype) {
  if (msgtype != nullptr) {
    
  } else {
    
  }
  msgtype_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), msgtype,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.Message.msgType)
}

// string content = 7;
inline void Message::clear_content() {
  content_.ClearToEmpty();
}
inline const std::string& Message::content() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.content)
  return _internal_content();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void Message::set_content(ArgT0&& arg0, ArgT... args) {
 
 content_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.content)
}
inline std::string* Message::mutable_content() {
  std::string* _s = _internal_mutable_content();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.Message.content)
  return _s;
}
inline const std::string& Message::_internal_content() const {
  return content_.Get();
}
inline void Message::_internal_set_content(const std::string& value) {
  
  content_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* Message::_internal_mutable_content() {
  
  return content_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* Message::release_content() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.Message.content)
  return content_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void Message::set_allocated_content(std::string* content) {
  if (content != nullptr) {
    
  } else {
    
  }
  content_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), content,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.Message.content)
}

// int64 time = 8;
inline void Message::clear_time() {
  time_ = int64_t{0};
}
inline ::herogoogle::protobuf::int64 Message::_internal_time() const {
  return time_;
}
inline ::herogoogle::protobuf::int64 Message::time() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.time)
  return _internal_time();
}
inline void Message::_internal_set_time(::herogoogle::protobuf::int64 value) {
  
  time_ = value;
}
inline void Message::set_time(::herogoogle::protobuf::int64 value) {
  _internal_set_time(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.time)
}

// .heroim.client.v3beta.dto.user.model.UserSimple fromUser = 9;
inline bool Message::_internal_has_fromuser() const {
  return this != internal_default_instance() && fromuser_ != nullptr;
}
inline bool Message::has_fromuser() const {
  return _internal_has_fromuser();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& Message::_internal_fromuser() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = fromuser_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& Message::fromuser() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.fromUser)
  return _internal_fromuser();
}
inline void Message::unsafe_arena_set_allocated_fromuser(
    ::heroim::client::v3beta::dto::user::model::UserSimple* fromuser) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(fromuser_);
  }
  fromuser_ = fromuser;
  if (fromuser) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.message.model.Message.fromUser)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* Message::release_fromuser() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = fromuser_;
  fromuser_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* Message::unsafe_arena_release_fromuser() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.Message.fromUser)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = fromuser_;
  fromuser_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* Message::_internal_mutable_fromuser() {
  
  if (fromuser_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    fromuser_ = p;
  }
  return fromuser_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* Message::mutable_fromuser() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_fromuser();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.Message.fromUser)
  return _msg;
}
inline void Message::set_allocated_fromuser(::heroim::client::v3beta::dto::user::model::UserSimple* fromuser) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(fromuser_);
  }
  if (fromuser) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(fromuser));
    if (message_arena != submessage_arena) {
      fromuser = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, fromuser, submessage_arena);
    }
    
  } else {
    
  }
  fromuser_ = fromuser;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.Message.fromUser)
}

// map<string, string> payload = 10;
inline int Message::_internal_payload_size() const {
  return payload_.size();
}
inline int Message::payload_size() const {
  return _internal_payload_size();
}
inline void Message::clear_payload() {
  payload_.Clear();
}
inline const ::herogoogle::protobuf::Map< std::string, std::string >&
Message::_internal_payload() const {
  return payload_.GetMap();
}
inline const ::herogoogle::protobuf::Map< std::string, std::string >&
Message::payload() const {
  // @@protoc_insertion_point(field_map:heroim.client.v3beta.dto.message.model.Message.payload)
  return _internal_payload();
}
inline ::herogoogle::protobuf::Map< std::string, std::string >*
Message::_internal_mutable_payload() {
  return payload_.MutableMap();
}
inline ::herogoogle::protobuf::Map< std::string, std::string >*
Message::mutable_payload() {
  // @@protoc_insertion_point(field_mutable_map:heroim.client.v3beta.dto.message.model.Message.payload)
  return _internal_mutable_payload();
}

// map<string, string> sdkExtra = 11;
inline int Message::_internal_sdkextra_size() const {
  return sdkextra_.size();
}
inline int Message::sdkextra_size() const {
  return _internal_sdkextra_size();
}
inline void Message::clear_sdkextra() {
  sdkextra_.Clear();
}
inline const ::herogoogle::protobuf::Map< std::string, std::string >&
Message::_internal_sdkextra() const {
  return sdkextra_.GetMap();
}
inline const ::herogoogle::protobuf::Map< std::string, std::string >&
Message::sdkextra() const {
  // @@protoc_insertion_point(field_map:heroim.client.v3beta.dto.message.model.Message.sdkExtra)
  return _internal_sdkextra();
}
inline ::herogoogle::protobuf::Map< std::string, std::string >*
Message::_internal_mutable_sdkextra() {
  return sdkextra_.MutableMap();
}
inline ::herogoogle::protobuf::Map< std::string, std::string >*
Message::mutable_sdkextra() {
  // @@protoc_insertion_point(field_mutable_map:heroim.client.v3beta.dto.message.model.Message.sdkExtra)
  return _internal_mutable_sdkextra();
}

// int32 status = 12;
inline void Message::clear_status() {
  status_ = 0;
}
inline ::herogoogle::protobuf::int32 Message::_internal_status() const {
  return status_;
}
inline ::herogoogle::protobuf::int32 Message::status() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.status)
  return _internal_status();
}
inline void Message::_internal_set_status(::herogoogle::protobuf::int32 value) {
  
  status_ = value;
}
inline void Message::set_status(::herogoogle::protobuf::int32 value) {
  _internal_set_status(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.status)
}

// string prevMsgId = 13;
inline void Message::clear_prevmsgid() {
  prevmsgid_.ClearToEmpty();
}
inline const std::string& Message::prevmsgid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.prevMsgId)
  return _internal_prevmsgid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void Message::set_prevmsgid(ArgT0&& arg0, ArgT... args) {
 
 prevmsgid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.prevMsgId)
}
inline std::string* Message::mutable_prevmsgid() {
  std::string* _s = _internal_mutable_prevmsgid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.Message.prevMsgId)
  return _s;
}
inline const std::string& Message::_internal_prevmsgid() const {
  return prevmsgid_.Get();
}
inline void Message::_internal_set_prevmsgid(const std::string& value) {
  
  prevmsgid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* Message::_internal_mutable_prevmsgid() {
  
  return prevmsgid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* Message::release_prevmsgid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.Message.prevMsgId)
  return prevmsgid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void Message::set_allocated_prevmsgid(std::string* prevmsgid) {
  if (prevmsgid != nullptr) {
    
  } else {
    
  }
  prevmsgid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), prevmsgid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.Message.prevMsgId)
}

// int64 sequence = 14;
inline void Message::clear_sequence() {
  sequence_ = int64_t{0};
}
inline ::herogoogle::protobuf::int64 Message::_internal_sequence() const {
  return sequence_;
}
inline ::herogoogle::protobuf::int64 Message::sequence() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.sequence)
  return _internal_sequence();
}
inline void Message::_internal_set_sequence(::herogoogle::protobuf::int64 value) {
  
  sequence_ = value;
}
inline void Message::set_sequence(::herogoogle::protobuf::int64 value) {
  _internal_set_sequence(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.sequence)
}

// .heroim.client.v3beta.dto.message.model.SessionKey sessionKey = 15;
inline bool Message::_internal_has_sessionkey() const {
  return this != internal_default_instance() && sessionkey_ != nullptr;
}
inline bool Message::has_sessionkey() const {
  return _internal_has_sessionkey();
}
inline void Message::clear_sessionkey() {
  if (GetArenaForAllocation() == nullptr && sessionkey_ != nullptr) {
    delete sessionkey_;
  }
  sessionkey_ = nullptr;
}
inline const ::heroim::client::v3beta::dto::message::model::SessionKey& Message::_internal_sessionkey() const {
  const ::heroim::client::v3beta::dto::message::model::SessionKey* p = sessionkey_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::message::model::SessionKey&>(
      ::heroim::client::v3beta::dto::message::model::_SessionKey_default_instance_);
}
inline const ::heroim::client::v3beta::dto::message::model::SessionKey& Message::sessionkey() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.sessionKey)
  return _internal_sessionkey();
}
inline void Message::unsafe_arena_set_allocated_sessionkey(
    ::heroim::client::v3beta::dto::message::model::SessionKey* sessionkey) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(sessionkey_);
  }
  sessionkey_ = sessionkey;
  if (sessionkey) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.message.model.Message.sessionKey)
}
inline ::heroim::client::v3beta::dto::message::model::SessionKey* Message::release_sessionkey() {
  
  ::heroim::client::v3beta::dto::message::model::SessionKey* temp = sessionkey_;
  sessionkey_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::message::model::SessionKey* Message::unsafe_arena_release_sessionkey() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.message.model.Message.sessionKey)
  
  ::heroim::client::v3beta::dto::message::model::SessionKey* temp = sessionkey_;
  sessionkey_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::message::model::SessionKey* Message::_internal_mutable_sessionkey() {
  
  if (sessionkey_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::message::model::SessionKey>(GetArenaForAllocation());
    sessionkey_ = p;
  }
  return sessionkey_;
}
inline ::heroim::client::v3beta::dto::message::model::SessionKey* Message::mutable_sessionkey() {
  ::heroim::client::v3beta::dto::message::model::SessionKey* _msg = _internal_mutable_sessionkey();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.message.model.Message.sessionKey)
  return _msg;
}
inline void Message::set_allocated_sessionkey(::heroim::client::v3beta::dto::message::model::SessionKey* sessionkey) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete sessionkey_;
  }
  if (sessionkey) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<::heroim::client::v3beta::dto::message::model::SessionKey>::GetOwningArena(sessionkey);
    if (message_arena != submessage_arena) {
      sessionkey = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, sessionkey, submessage_arena);
    }
    
  } else {
    
  }
  sessionkey_ = sessionkey;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.message.model.Message.sessionKey)
}

// int64 updateTime = 16;
inline void Message::clear_updatetime() {
  updatetime_ = int64_t{0};
}
inline ::herogoogle::protobuf::int64 Message::_internal_updatetime() const {
  return updatetime_;
}
inline ::herogoogle::protobuf::int64 Message::updatetime() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.message.model.Message.updateTime)
  return _internal_updatetime();
}
inline void Message::_internal_set_updatetime(::herogoogle::protobuf::int64 value) {
  
  updatetime_ = value;
}
inline void Message::set_updatetime(::herogoogle::protobuf::int64 value) {
  _internal_set_updatetime(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.message.model.Message.updateTime)
}

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace model
}  // namespace message
}  // namespace dto
}  // namespace v3beta
}  // namespace client
}  // namespace heroim

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::heroim::client::v3beta::dto::message::model::UserSessionSort_Status> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::heroim::client::v3beta::dto::message::model::UserSessionSort_Status>() {
  return ::heroim::client::v3beta::dto::message::model::UserSessionSort_Status_descriptor();
}
template <> struct is_proto_enum< ::heroim::client::v3beta::dto::message::model::SessionType> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::heroim::client::v3beta::dto::message::model::SessionType>() {
  return ::heroim::client::v3beta::dto::message::model::SessionType_descriptor();
}
template <> struct is_proto_enum< ::heroim::client::v3beta::dto::message::model::MessageStatus> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::heroim::client::v3beta::dto::message::model::MessageStatus>() {
  return ::heroim::client::v3beta::dto::message::model::MessageStatus_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)


#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_client_2fv3beta_2fdto_2fmessage_2fmodel_2fmessage_5fmodel_2eproto
