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

#include "nav_map.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
extern PROTOBUF_INTERNAL_EXPORT_nav_5fmap_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_NavMapInfo_nav_5fmap_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_nav_5fmap_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_NavMapQuadInfo_nav_5fmap_2eproto;
namespace Anki {
namespace Vector {
namespace external_interface {
class NavMapQuadInfoDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<NavMapQuadInfo> _instance;
} _NavMapQuadInfo_default_instance_;
class NavMapInfoDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<NavMapInfo> _instance;
} _NavMapInfo_default_instance_;
class NavMapFeedRequestDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<NavMapFeedRequest> _instance;
} _NavMapFeedRequest_default_instance_;
class NavMapFeedResponseDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<NavMapFeedResponse> _instance;
} _NavMapFeedResponse_default_instance_;
}  // namespace external_interface
}  // namespace Vector
}  // namespace Anki
static void InitDefaultsscc_info_NavMapFeedRequest_nav_5fmap_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_NavMapFeedRequest_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::NavMapFeedRequest();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::NavMapFeedRequest::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_NavMapFeedRequest_nav_5fmap_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_NavMapFeedRequest_nav_5fmap_2eproto}, {}};

static void InitDefaultsscc_info_NavMapFeedResponse_nav_5fmap_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_NavMapFeedResponse_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::NavMapFeedResponse();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::NavMapFeedResponse::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_NavMapFeedResponse_nav_5fmap_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 2, 0, InitDefaultsscc_info_NavMapFeedResponse_nav_5fmap_2eproto}, {
      &scc_info_NavMapInfo_nav_5fmap_2eproto.base,
      &scc_info_NavMapQuadInfo_nav_5fmap_2eproto.base,}};

static void InitDefaultsscc_info_NavMapInfo_nav_5fmap_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_NavMapInfo_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::NavMapInfo();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::NavMapInfo::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_NavMapInfo_nav_5fmap_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_NavMapInfo_nav_5fmap_2eproto}, {}};

static void InitDefaultsscc_info_NavMapQuadInfo_nav_5fmap_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_NavMapQuadInfo_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::NavMapQuadInfo();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::NavMapQuadInfo::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_NavMapQuadInfo_nav_5fmap_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_NavMapQuadInfo_nav_5fmap_2eproto}, {}};

static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_nav_5fmap_2eproto[4];
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_nav_5fmap_2eproto[1];
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_nav_5fmap_2eproto = nullptr;

const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_nav_5fmap_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapQuadInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapQuadInfo, content_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapQuadInfo, depth_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapQuadInfo, color_rgba_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapInfo, root_depth_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapInfo, root_size_mm_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapInfo, root_center_x_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapInfo, root_center_y_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapInfo, root_center_z_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapFeedRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapFeedRequest, frequency_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapFeedResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapFeedResponse, origin_id_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapFeedResponse, map_info_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::NavMapFeedResponse, quad_infos_),
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, sizeof(::Anki::Vector::external_interface::NavMapQuadInfo)},
  { 8, -1, sizeof(::Anki::Vector::external_interface::NavMapInfo)},
  { 18, -1, sizeof(::Anki::Vector::external_interface::NavMapFeedRequest)},
  { 24, -1, sizeof(::Anki::Vector::external_interface::NavMapFeedResponse)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_NavMapQuadInfo_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_NavMapInfo_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_NavMapFeedRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_NavMapFeedResponse_default_instance_),
};

const char descriptor_table_protodef_nav_5fmap_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\rnav_map.proto\022\036Anki.Vector.external_in"
  "terface\"x\n\016NavMapQuadInfo\022C\n\007content\030\001 \001"
  "(\01622.Anki.Vector.external_interface.NavN"
  "odeContentType\022\r\n\005depth\030\002 \001(\r\022\022\n\ncolor_r"
  "gba\030\003 \001(\r\"{\n\nNavMapInfo\022\022\n\nroot_depth\030\001 "
  "\001(\005\022\024\n\014root_size_mm\030\002 \001(\002\022\025\n\rroot_center"
  "_x\030\003 \001(\002\022\025\n\rroot_center_y\030\004 \001(\002\022\025\n\rroot_"
  "center_z\030\005 \001(\002\"&\n\021NavMapFeedRequest\022\021\n\tf"
  "requency\030\001 \001(\002\"\251\001\n\022NavMapFeedResponse\022\021\n"
  "\torigin_id\030\001 \001(\r\022<\n\010map_info\030\002 \001(\0132*.Ank"
  "i.Vector.external_interface.NavMapInfo\022B"
  "\n\nquad_infos\030\003 \003(\0132..Anki.Vector.externa"
  "l_interface.NavMapQuadInfo*\310\002\n\022NavNodeCo"
  "ntentType\022\024\n\020NAV_NODE_UNKNOWN\020\000\022\036\n\032NAV_N"
  "ODE_CLEAR_OF_OBSTACLE\020\001\022\033\n\027NAV_NODE_CLEA"
  "R_OF_CLIFF\020\002\022\032\n\026NAV_NODE_OBSTACLE_CUBE\020\003"
  "\022\037\n\033NAV_NODE_OBSTACLE_PROXIMITY\020\004\022(\n$NAV"
  "_NODE_OBSTACLE_PROXIMITY_EXPLORED\020\005\022\"\n\036N"
  "AV_NODE_OBSTACLE_UNRECOGNIZED\020\006\022\022\n\016NAV_N"
  "ODE_CLIFF\020\007\022\035\n\031NAV_NODE_INTERESTING_EDGE"
  "\020\010\022!\n\035NAV_NODE_NON_INTERESTING_EDGE\020\tB Z"
  "\036Anki.Vector.external_interfaceb\006proto3"
  ;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_nav_5fmap_2eproto_deps[1] = {
};
static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_nav_5fmap_2eproto_sccs[4] = {
  &scc_info_NavMapFeedRequest_nav_5fmap_2eproto.base,
  &scc_info_NavMapFeedResponse_nav_5fmap_2eproto.base,
  &scc_info_NavMapInfo_nav_5fmap_2eproto.base,
  &scc_info_NavMapQuadInfo_nav_5fmap_2eproto.base,
};
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_nav_5fmap_2eproto_once;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_nav_5fmap_2eproto = {
  false, false, descriptor_table_protodef_nav_5fmap_2eproto, "nav_map.proto", 879,
  &descriptor_table_nav_5fmap_2eproto_once, descriptor_table_nav_5fmap_2eproto_sccs, descriptor_table_nav_5fmap_2eproto_deps, 4, 0,
  schemas, file_default_instances, TableStruct_nav_5fmap_2eproto::offsets,
  file_level_metadata_nav_5fmap_2eproto, 4, file_level_enum_descriptors_nav_5fmap_2eproto, file_level_service_descriptors_nav_5fmap_2eproto,
};

// Force running AddDescriptors() at dynamic initialization time.
static bool dynamic_init_dummy_nav_5fmap_2eproto = (static_cast<void>(::PROTOBUF_NAMESPACE_ID::internal::AddDescriptors(&descriptor_table_nav_5fmap_2eproto)), true);
namespace Anki {
namespace Vector {
namespace external_interface {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* NavNodeContentType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_nav_5fmap_2eproto);
  return file_level_enum_descriptors_nav_5fmap_2eproto[0];
}
bool NavNodeContentType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
      return true;
    default:
      return false;
  }
}


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

void NavMapQuadInfo::InitAsDefaultInstance() {
}
class NavMapQuadInfo::_Internal {
 public:
};

NavMapQuadInfo::NavMapQuadInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.NavMapQuadInfo)
}
NavMapQuadInfo::NavMapQuadInfo(const NavMapQuadInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&content_, &from.content_,
    static_cast<size_t>(reinterpret_cast<char*>(&color_rgba_) -
    reinterpret_cast<char*>(&content_)) + sizeof(color_rgba_));
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.NavMapQuadInfo)
}

void NavMapQuadInfo::SharedCtor() {
  ::memset(&content_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&color_rgba_) -
      reinterpret_cast<char*>(&content_)) + sizeof(color_rgba_));
}

NavMapQuadInfo::~NavMapQuadInfo() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.NavMapQuadInfo)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void NavMapQuadInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

void NavMapQuadInfo::ArenaDtor(void* object) {
  NavMapQuadInfo* _this = reinterpret_cast< NavMapQuadInfo* >(object);
  (void)_this;
}
void NavMapQuadInfo::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void NavMapQuadInfo::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const NavMapQuadInfo& NavMapQuadInfo::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_NavMapQuadInfo_nav_5fmap_2eproto.base);
  return *internal_default_instance();
}


void NavMapQuadInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.NavMapQuadInfo)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&content_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&color_rgba_) -
      reinterpret_cast<char*>(&content_)) + sizeof(color_rgba_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* NavMapQuadInfo::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // .Anki.Vector.external_interface.NavNodeContentType content = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_content(static_cast<::Anki::Vector::external_interface::NavNodeContentType>(val));
        } else goto handle_unusual;
        continue;
      // uint32 depth = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          depth_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // uint32 color_rgba = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          color_rgba_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* NavMapQuadInfo::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.NavMapQuadInfo)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .Anki.Vector.external_interface.NavNodeContentType content = 1;
  if (this->content() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      1, this->_internal_content(), target);
  }

  // uint32 depth = 2;
  if (this->depth() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_depth(), target);
  }

  // uint32 color_rgba = 3;
  if (this->color_rgba() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_color_rgba(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.NavMapQuadInfo)
  return target;
}

size_t NavMapQuadInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.NavMapQuadInfo)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .Anki.Vector.external_interface.NavNodeContentType content = 1;
  if (this->content() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_content());
  }

  // uint32 depth = 2;
  if (this->depth() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
        this->_internal_depth());
  }

  // uint32 color_rgba = 3;
  if (this->color_rgba() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
        this->_internal_color_rgba());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void NavMapQuadInfo::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.NavMapQuadInfo)
  GOOGLE_DCHECK_NE(&from, this);
  const NavMapQuadInfo* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<NavMapQuadInfo>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.NavMapQuadInfo)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.NavMapQuadInfo)
    MergeFrom(*source);
  }
}

void NavMapQuadInfo::MergeFrom(const NavMapQuadInfo& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.NavMapQuadInfo)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.content() != 0) {
    _internal_set_content(from._internal_content());
  }
  if (from.depth() != 0) {
    _internal_set_depth(from._internal_depth());
  }
  if (from.color_rgba() != 0) {
    _internal_set_color_rgba(from._internal_color_rgba());
  }
}

void NavMapQuadInfo::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.NavMapQuadInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void NavMapQuadInfo::CopyFrom(const NavMapQuadInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.NavMapQuadInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool NavMapQuadInfo::IsInitialized() const {
  return true;
}

void NavMapQuadInfo::InternalSwap(NavMapQuadInfo* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(NavMapQuadInfo, color_rgba_)
      + sizeof(NavMapQuadInfo::color_rgba_)
      - PROTOBUF_FIELD_OFFSET(NavMapQuadInfo, content_)>(
          reinterpret_cast<char*>(&content_),
          reinterpret_cast<char*>(&other->content_));
}

::PROTOBUF_NAMESPACE_ID::Metadata NavMapQuadInfo::GetMetadata() const {
  return GetMetadataStatic();
}


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

void NavMapInfo::InitAsDefaultInstance() {
}
class NavMapInfo::_Internal {
 public:
};

NavMapInfo::NavMapInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.NavMapInfo)
}
NavMapInfo::NavMapInfo(const NavMapInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&root_depth_, &from.root_depth_,
    static_cast<size_t>(reinterpret_cast<char*>(&root_center_z_) -
    reinterpret_cast<char*>(&root_depth_)) + sizeof(root_center_z_));
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.NavMapInfo)
}

void NavMapInfo::SharedCtor() {
  ::memset(&root_depth_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&root_center_z_) -
      reinterpret_cast<char*>(&root_depth_)) + sizeof(root_center_z_));
}

NavMapInfo::~NavMapInfo() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.NavMapInfo)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void NavMapInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

void NavMapInfo::ArenaDtor(void* object) {
  NavMapInfo* _this = reinterpret_cast< NavMapInfo* >(object);
  (void)_this;
}
void NavMapInfo::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void NavMapInfo::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const NavMapInfo& NavMapInfo::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_NavMapInfo_nav_5fmap_2eproto.base);
  return *internal_default_instance();
}


void NavMapInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.NavMapInfo)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&root_depth_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&root_center_z_) -
      reinterpret_cast<char*>(&root_depth_)) + sizeof(root_center_z_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* NavMapInfo::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // int32 root_depth = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          root_depth_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // float root_size_mm = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 21)) {
          root_size_mm_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // float root_center_x = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 29)) {
          root_center_x_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // float root_center_y = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 37)) {
          root_center_y_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // float root_center_z = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 45)) {
          root_center_z_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* NavMapInfo::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.NavMapInfo)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 root_depth = 1;
  if (this->root_depth() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_root_depth(), target);
  }

  // float root_size_mm = 2;
  if (!(this->root_size_mm() <= 0 && this->root_size_mm() >= 0)) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(2, this->_internal_root_size_mm(), target);
  }

  // float root_center_x = 3;
  if (!(this->root_center_x() <= 0 && this->root_center_x() >= 0)) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(3, this->_internal_root_center_x(), target);
  }

  // float root_center_y = 4;
  if (!(this->root_center_y() <= 0 && this->root_center_y() >= 0)) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(4, this->_internal_root_center_y(), target);
  }

  // float root_center_z = 5;
  if (!(this->root_center_z() <= 0 && this->root_center_z() >= 0)) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(5, this->_internal_root_center_z(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.NavMapInfo)
  return target;
}

size_t NavMapInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.NavMapInfo)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 root_depth = 1;
  if (this->root_depth() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
        this->_internal_root_depth());
  }

  // float root_size_mm = 2;
  if (!(this->root_size_mm() <= 0 && this->root_size_mm() >= 0)) {
    total_size += 1 + 4;
  }

  // float root_center_x = 3;
  if (!(this->root_center_x() <= 0 && this->root_center_x() >= 0)) {
    total_size += 1 + 4;
  }

  // float root_center_y = 4;
  if (!(this->root_center_y() <= 0 && this->root_center_y() >= 0)) {
    total_size += 1 + 4;
  }

  // float root_center_z = 5;
  if (!(this->root_center_z() <= 0 && this->root_center_z() >= 0)) {
    total_size += 1 + 4;
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void NavMapInfo::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.NavMapInfo)
  GOOGLE_DCHECK_NE(&from, this);
  const NavMapInfo* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<NavMapInfo>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.NavMapInfo)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.NavMapInfo)
    MergeFrom(*source);
  }
}

void NavMapInfo::MergeFrom(const NavMapInfo& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.NavMapInfo)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.root_depth() != 0) {
    _internal_set_root_depth(from._internal_root_depth());
  }
  if (!(from.root_size_mm() <= 0 && from.root_size_mm() >= 0)) {
    _internal_set_root_size_mm(from._internal_root_size_mm());
  }
  if (!(from.root_center_x() <= 0 && from.root_center_x() >= 0)) {
    _internal_set_root_center_x(from._internal_root_center_x());
  }
  if (!(from.root_center_y() <= 0 && from.root_center_y() >= 0)) {
    _internal_set_root_center_y(from._internal_root_center_y());
  }
  if (!(from.root_center_z() <= 0 && from.root_center_z() >= 0)) {
    _internal_set_root_center_z(from._internal_root_center_z());
  }
}

void NavMapInfo::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.NavMapInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void NavMapInfo::CopyFrom(const NavMapInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.NavMapInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool NavMapInfo::IsInitialized() const {
  return true;
}

void NavMapInfo::InternalSwap(NavMapInfo* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(NavMapInfo, root_center_z_)
      + sizeof(NavMapInfo::root_center_z_)
      - PROTOBUF_FIELD_OFFSET(NavMapInfo, root_depth_)>(
          reinterpret_cast<char*>(&root_depth_),
          reinterpret_cast<char*>(&other->root_depth_));
}

::PROTOBUF_NAMESPACE_ID::Metadata NavMapInfo::GetMetadata() const {
  return GetMetadataStatic();
}


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

void NavMapFeedRequest::InitAsDefaultInstance() {
}
class NavMapFeedRequest::_Internal {
 public:
};

NavMapFeedRequest::NavMapFeedRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.NavMapFeedRequest)
}
NavMapFeedRequest::NavMapFeedRequest(const NavMapFeedRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  frequency_ = from.frequency_;
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.NavMapFeedRequest)
}

void NavMapFeedRequest::SharedCtor() {
  frequency_ = 0;
}

NavMapFeedRequest::~NavMapFeedRequest() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.NavMapFeedRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void NavMapFeedRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

void NavMapFeedRequest::ArenaDtor(void* object) {
  NavMapFeedRequest* _this = reinterpret_cast< NavMapFeedRequest* >(object);
  (void)_this;
}
void NavMapFeedRequest::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void NavMapFeedRequest::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const NavMapFeedRequest& NavMapFeedRequest::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_NavMapFeedRequest_nav_5fmap_2eproto.base);
  return *internal_default_instance();
}


void NavMapFeedRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.NavMapFeedRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  frequency_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* NavMapFeedRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // float frequency = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 13)) {
          frequency_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* NavMapFeedRequest::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.NavMapFeedRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // float frequency = 1;
  if (!(this->frequency() <= 0 && this->frequency() >= 0)) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(1, this->_internal_frequency(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.NavMapFeedRequest)
  return target;
}

size_t NavMapFeedRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.NavMapFeedRequest)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // float frequency = 1;
  if (!(this->frequency() <= 0 && this->frequency() >= 0)) {
    total_size += 1 + 4;
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void NavMapFeedRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.NavMapFeedRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const NavMapFeedRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<NavMapFeedRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.NavMapFeedRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.NavMapFeedRequest)
    MergeFrom(*source);
  }
}

void NavMapFeedRequest::MergeFrom(const NavMapFeedRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.NavMapFeedRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (!(from.frequency() <= 0 && from.frequency() >= 0)) {
    _internal_set_frequency(from._internal_frequency());
  }
}

void NavMapFeedRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.NavMapFeedRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void NavMapFeedRequest::CopyFrom(const NavMapFeedRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.NavMapFeedRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool NavMapFeedRequest::IsInitialized() const {
  return true;
}

void NavMapFeedRequest::InternalSwap(NavMapFeedRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(frequency_, other->frequency_);
}

::PROTOBUF_NAMESPACE_ID::Metadata NavMapFeedRequest::GetMetadata() const {
  return GetMetadataStatic();
}


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

void NavMapFeedResponse::InitAsDefaultInstance() {
  ::Anki::Vector::external_interface::_NavMapFeedResponse_default_instance_._instance.get_mutable()->map_info_ = const_cast< ::Anki::Vector::external_interface::NavMapInfo*>(
      ::Anki::Vector::external_interface::NavMapInfo::internal_default_instance());
}
class NavMapFeedResponse::_Internal {
 public:
  static const ::Anki::Vector::external_interface::NavMapInfo& map_info(const NavMapFeedResponse* msg);
};

const ::Anki::Vector::external_interface::NavMapInfo&
NavMapFeedResponse::_Internal::map_info(const NavMapFeedResponse* msg) {
  return *msg->map_info_;
}
NavMapFeedResponse::NavMapFeedResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena),
  quad_infos_(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.NavMapFeedResponse)
}
NavMapFeedResponse::NavMapFeedResponse(const NavMapFeedResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      quad_infos_(from.quad_infos_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_map_info()) {
    map_info_ = new ::Anki::Vector::external_interface::NavMapInfo(*from.map_info_);
  } else {
    map_info_ = nullptr;
  }
  origin_id_ = from.origin_id_;
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.NavMapFeedResponse)
}

void NavMapFeedResponse::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_NavMapFeedResponse_nav_5fmap_2eproto.base);
  ::memset(&map_info_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&origin_id_) -
      reinterpret_cast<char*>(&map_info_)) + sizeof(origin_id_));
}

NavMapFeedResponse::~NavMapFeedResponse() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.NavMapFeedResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void NavMapFeedResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  if (this != internal_default_instance()) delete map_info_;
}

void NavMapFeedResponse::ArenaDtor(void* object) {
  NavMapFeedResponse* _this = reinterpret_cast< NavMapFeedResponse* >(object);
  (void)_this;
}
void NavMapFeedResponse::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void NavMapFeedResponse::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const NavMapFeedResponse& NavMapFeedResponse::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_NavMapFeedResponse_nav_5fmap_2eproto.base);
  return *internal_default_instance();
}


void NavMapFeedResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.NavMapFeedResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  quad_infos_.Clear();
  if (GetArena() == nullptr && map_info_ != nullptr) {
    delete map_info_;
  }
  map_info_ = nullptr;
  origin_id_ = 0u;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* NavMapFeedResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // uint32 origin_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          origin_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // .Anki.Vector.external_interface.NavMapInfo map_info = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_map_info(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .Anki.Vector.external_interface.NavMapQuadInfo quad_infos = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_quad_infos(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* NavMapFeedResponse::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.NavMapFeedResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 origin_id = 1;
  if (this->origin_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_origin_id(), target);
  }

  // .Anki.Vector.external_interface.NavMapInfo map_info = 2;
  if (this->has_map_info()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::map_info(this), target, stream);
  }

  // repeated .Anki.Vector.external_interface.NavMapQuadInfo quad_infos = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_quad_infos_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, this->_internal_quad_infos(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.NavMapFeedResponse)
  return target;
}

size_t NavMapFeedResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.NavMapFeedResponse)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .Anki.Vector.external_interface.NavMapQuadInfo quad_infos = 3;
  total_size += 1UL * this->_internal_quad_infos_size();
  for (const auto& msg : this->quad_infos_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // .Anki.Vector.external_interface.NavMapInfo map_info = 2;
  if (this->has_map_info()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *map_info_);
  }

  // uint32 origin_id = 1;
  if (this->origin_id() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
        this->_internal_origin_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void NavMapFeedResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.NavMapFeedResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const NavMapFeedResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<NavMapFeedResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.NavMapFeedResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.NavMapFeedResponse)
    MergeFrom(*source);
  }
}

void NavMapFeedResponse::MergeFrom(const NavMapFeedResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.NavMapFeedResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  quad_infos_.MergeFrom(from.quad_infos_);
  if (from.has_map_info()) {
    _internal_mutable_map_info()->::Anki::Vector::external_interface::NavMapInfo::MergeFrom(from._internal_map_info());
  }
  if (from.origin_id() != 0) {
    _internal_set_origin_id(from._internal_origin_id());
  }
}

void NavMapFeedResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.NavMapFeedResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void NavMapFeedResponse::CopyFrom(const NavMapFeedResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.NavMapFeedResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool NavMapFeedResponse::IsInitialized() const {
  return true;
}

void NavMapFeedResponse::InternalSwap(NavMapFeedResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  quad_infos_.InternalSwap(&other->quad_infos_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(NavMapFeedResponse, origin_id_)
      + sizeof(NavMapFeedResponse::origin_id_)
      - PROTOBUF_FIELD_OFFSET(NavMapFeedResponse, map_info_)>(
          reinterpret_cast<char*>(&map_info_),
          reinterpret_cast<char*>(&other->map_info_));
}

::PROTOBUF_NAMESPACE_ID::Metadata NavMapFeedResponse::GetMetadata() const {
  return GetMetadataStatic();
}



// Begin code inserted by Anki plugin.
NavMapQuadInfo::NavMapQuadInfo( ::Anki::Vector::external_interface::NavNodeContentType content, ::google::protobuf::uint32 depth, ::google::protobuf::uint32 color_rgba )
  : NavMapQuadInfo(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_content( content );
  set_depth( depth );
  set_color_rgba( color_rgba );
}
// End code inserted by Anki plugin.


// Begin code inserted by Anki plugin.
NavMapInfo::NavMapInfo( ::google::protobuf::int32 root_depth, float root_size_mm, float root_center_x, float root_center_y, float root_center_z )
  : NavMapInfo(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_root_depth( root_depth );
  set_root_size_mm( root_size_mm );
  set_root_center_x( root_center_x );
  set_root_center_y( root_center_y );
  set_root_center_z( root_center_z );
}
// End code inserted by Anki plugin.


// Begin code inserted by Anki plugin.
NavMapFeedRequest::NavMapFeedRequest( float frequency )
  : NavMapFeedRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_frequency( frequency );
}
// End code inserted by Anki plugin.

// @@protoc_insertion_point(namespace_scope)
}  // namespace external_interface
}  // namespace Vector
}  // namespace Anki
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::NavMapQuadInfo* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::NavMapQuadInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::NavMapQuadInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::NavMapInfo* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::NavMapInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::NavMapInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::NavMapFeedRequest* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::NavMapFeedRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::NavMapFeedRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::NavMapFeedResponse* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::NavMapFeedResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::NavMapFeedResponse >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
