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

#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
#include "Reads.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/port.h>
#include <google/protobuf/stubs/once.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/wire_format_lite_inl.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)

namespace goby {

namespace {

const ::google::protobuf::Descriptor* ReadCollection_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  ReadCollection_reflection_ = NULL;
const ::google::protobuf::Descriptor* ReadEntry_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  ReadEntry_reflection_ = NULL;
const ::google::protobuf::Descriptor* MetaData_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  MetaData_reflection_ = NULL;

}  // namespace


void protobuf_AssignDesc_Reads_2eproto() GOOGLE_ATTRIBUTE_COLD;
void protobuf_AssignDesc_Reads_2eproto() {
  protobuf_AddDesc_Reads_2eproto();
  const ::google::protobuf::FileDescriptor* file =
    ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
      "Reads.proto");
  GOOGLE_CHECK(file != NULL);
  ReadCollection_descriptor_ = file->message_type(0);
  static const int ReadCollection_offsets_[1] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadCollection, reads_),
  };
  ReadCollection_reflection_ =
    ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
      ReadCollection_descriptor_,
      ReadCollection::default_instance_,
      ReadCollection_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadCollection, _has_bits_[0]),
      -1,
      -1,
      sizeof(ReadCollection),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadCollection, _internal_metadata_),
      -1);
  ReadEntry_descriptor_ = file->message_type(1);
  static const int ReadEntry_offsets_[12] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, read_index_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, barcode_index_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, read_identifier_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, description_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, read_length_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, sequence_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, sequence_pair_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, read_length_pair_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, quality_scores_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, quality_scores_pair_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, compressed_data_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, meta_data_),
  };
  ReadEntry_reflection_ =
    ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
      ReadEntry_descriptor_,
      ReadEntry::default_instance_,
      ReadEntry_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, _has_bits_[0]),
      -1,
      -1,
      sizeof(ReadEntry),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, _internal_metadata_),
      -1);
  MetaData_descriptor_ = file->message_type(2);
  static const int MetaData_offsets_[2] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MetaData, key_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MetaData, value_),
  };
  MetaData_reflection_ =
    ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
      MetaData_descriptor_,
      MetaData::default_instance_,
      MetaData_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MetaData, _has_bits_[0]),
      -1,
      -1,
      sizeof(MetaData),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MetaData, _internal_metadata_),
      -1);
}

namespace {

GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
inline void protobuf_AssignDescriptorsOnce() {
  ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
                 &protobuf_AssignDesc_Reads_2eproto);
}

void protobuf_RegisterTypes(const ::std::string&) GOOGLE_ATTRIBUTE_COLD;
void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
      ReadCollection_descriptor_, &ReadCollection::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
      ReadEntry_descriptor_, &ReadEntry::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
      MetaData_descriptor_, &MetaData::default_instance());
}

}  // namespace

void protobuf_ShutdownFile_Reads_2eproto() {
  delete ReadCollection::default_instance_;
  delete ReadCollection_reflection_;
  delete ReadEntry::default_instance_;
  delete ReadEntry_reflection_;
  delete MetaData::default_instance_;
  delete MetaData_reflection_;
}

void protobuf_AddDesc_Reads_2eproto() GOOGLE_ATTRIBUTE_COLD;
void protobuf_AddDesc_Reads_2eproto() {
  static bool already_here = false;
  if (already_here) return;
  already_here = true;
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
    "\n\013Reads.proto\022\004goby\"0\n\016ReadCollection\022\036\n"
    "\005reads\030\001 \003(\0132\017.goby.ReadEntry\"\255\002\n\tReadEn"
    "try\022\022\n\nread_index\030\001 \002(\r\022\025\n\rbarcode_index"
    "\030\n \001(\r\022\027\n\017read_identifier\030\027 \001(\t\022\023\n\013descr"
    "iption\030\026 \001(\t\022\023\n\013read_length\030\002 \002(\r\022\020\n\010seq"
    "uence\030\003 \001(\014\022\025\n\rsequence_pair\030\005 \001(\014\022\030\n\020re"
    "ad_length_pair\030\006 \001(\r\022\026\n\016quality_scores\030\004"
    " \001(\014\022\033\n\023quality_scores_pair\030\007 \001(\014\022\027\n\017com"
    "pressed_data\030\010 \001(\014\022!\n\tmeta_data\030\031 \003(\0132\016."
    "goby.MetaData\"&\n\010MetaData\022\013\n\003key\030\001 \002(\t\022\r"
    "\n\005value\030\002 \002(\tB\"\n\036edu.cornell.med.icb.gob"
    "y.readsH\001", 449);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "Reads.proto", &protobuf_RegisterTypes);
  ReadCollection::default_instance_ = new ReadCollection();
  ReadEntry::default_instance_ = new ReadEntry();
  MetaData::default_instance_ = new MetaData();
  ReadCollection::default_instance_->InitAsDefaultInstance();
  ReadEntry::default_instance_->InitAsDefaultInstance();
  MetaData::default_instance_->InitAsDefaultInstance();
  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_Reads_2eproto);
}

// Force AddDescriptors() to be called at static initialization time.
struct StaticDescriptorInitializer_Reads_2eproto {
  StaticDescriptorInitializer_Reads_2eproto() {
    protobuf_AddDesc_Reads_2eproto();
  }
} static_descriptor_initializer_Reads_2eproto_;

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

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int ReadCollection::kReadsFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

ReadCollection::ReadCollection()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:goby.ReadCollection)
}

void ReadCollection::InitAsDefaultInstance() {
}

ReadCollection::ReadCollection(const ReadCollection& from)
  : ::google::protobuf::Message(),
    _internal_metadata_(NULL) {
  SharedCtor();
  MergeFrom(from);
  // @@protoc_insertion_point(copy_constructor:goby.ReadCollection)
}

void ReadCollection::SharedCtor() {
  _cached_size_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ReadCollection::~ReadCollection() {
  // @@protoc_insertion_point(destructor:goby.ReadCollection)
  SharedDtor();
}

void ReadCollection::SharedDtor() {
  if (this != default_instance_) {
  }
}

void ReadCollection::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* ReadCollection::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return ReadCollection_descriptor_;
}

const ReadCollection& ReadCollection::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_Reads_2eproto();
  return *default_instance_;
}

ReadCollection* ReadCollection::default_instance_ = NULL;

ReadCollection* ReadCollection::New(::google::protobuf::Arena* arena) const {
  ReadCollection* n = new ReadCollection;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void ReadCollection::Clear() {
// @@protoc_insertion_point(message_clear_start:goby.ReadCollection)
  reads_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  if (_internal_metadata_.have_unknown_fields()) {
    mutable_unknown_fields()->Clear();
  }
}

bool ReadCollection::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:goby.ReadCollection)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(127);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .goby.ReadEntry reads = 1;
      case 1: {
        if (tag == 10) {
          DO_(input->IncrementRecursionDepth());
         parse_loop_reads:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth(
                input, add_reads()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(10)) goto parse_loop_reads;
        input->UnsafeDecrementRecursionDepth();
        if (input->ExpectAtEnd()) goto success;
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:goby.ReadCollection)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:goby.ReadCollection)
  return false;
#undef DO_
}

void ReadCollection::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:goby.ReadCollection)
  // repeated .goby.ReadEntry reads = 1;
  for (unsigned int i = 0, n = this->reads_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->reads(i), output);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:goby.ReadCollection)
}

::google::protobuf::uint8* ReadCollection::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  // @@protoc_insertion_point(serialize_to_array_start:goby.ReadCollection)
  // repeated .goby.ReadEntry reads = 1;
  for (unsigned int i = 0, n = this->reads_size(); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        1, this->reads(i), false, target);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:goby.ReadCollection)
  return target;
}

int ReadCollection::ByteSize() const {
// @@protoc_insertion_point(message_byte_size_start:goby.ReadCollection)
  int total_size = 0;

  // repeated .goby.ReadEntry reads = 1;
  total_size += 1 * this->reads_size();
  for (int i = 0; i < this->reads_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->reads(i));
  }

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        unknown_fields());
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ReadCollection::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:goby.ReadCollection)
  if (GOOGLE_PREDICT_FALSE(&from == this)) {
    ::google::protobuf::internal::MergeFromFail(__FILE__, __LINE__);
  }
  const ReadCollection* source = 
      ::google::protobuf::internal::DynamicCastToGenerated<const ReadCollection>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:goby.ReadCollection)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:goby.ReadCollection)
    MergeFrom(*source);
  }
}

void ReadCollection::MergeFrom(const ReadCollection& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:goby.ReadCollection)
  if (GOOGLE_PREDICT_FALSE(&from == this)) {
    ::google::protobuf::internal::MergeFromFail(__FILE__, __LINE__);
  }
  reads_.MergeFrom(from.reads_);
  if (from._internal_metadata_.have_unknown_fields()) {
    mutable_unknown_fields()->MergeFrom(from.unknown_fields());
  }
}

void ReadCollection::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:goby.ReadCollection)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ReadCollection::CopyFrom(const ReadCollection& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:goby.ReadCollection)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ReadCollection::IsInitialized() const {

  if (!::google::protobuf::internal::AllAreInitialized(this->reads())) return false;
  return true;
}

void ReadCollection::Swap(ReadCollection* other) {
  if (other == this) return;
  InternalSwap(other);
}
void ReadCollection::InternalSwap(ReadCollection* other) {
  reads_.UnsafeArenaSwap(&other->reads_);
  std::swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  std::swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata ReadCollection::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = ReadCollection_descriptor_;
  metadata.reflection = ReadCollection_reflection_;
  return metadata;
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// ReadCollection

// repeated .goby.ReadEntry reads = 1;
int ReadCollection::reads_size() const {
  return reads_.size();
}
void ReadCollection::clear_reads() {
  reads_.Clear();
}
const ::goby::ReadEntry& ReadCollection::reads(int index) const {
  // @@protoc_insertion_point(field_get:goby.ReadCollection.reads)
  return reads_.Get(index);
}
::goby::ReadEntry* ReadCollection::mutable_reads(int index) {
  // @@protoc_insertion_point(field_mutable:goby.ReadCollection.reads)
  return reads_.Mutable(index);
}
::goby::ReadEntry* ReadCollection::add_reads() {
  // @@protoc_insertion_point(field_add:goby.ReadCollection.reads)
  return reads_.Add();
}
::google::protobuf::RepeatedPtrField< ::goby::ReadEntry >*
ReadCollection::mutable_reads() {
  // @@protoc_insertion_point(field_mutable_list:goby.ReadCollection.reads)
  return &reads_;
}
const ::google::protobuf::RepeatedPtrField< ::goby::ReadEntry >&
ReadCollection::reads() const {
  // @@protoc_insertion_point(field_list:goby.ReadCollection.reads)
  return reads_;
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

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

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int ReadEntry::kReadIndexFieldNumber;
const int ReadEntry::kBarcodeIndexFieldNumber;
const int ReadEntry::kReadIdentifierFieldNumber;
const int ReadEntry::kDescriptionFieldNumber;
const int ReadEntry::kReadLengthFieldNumber;
const int ReadEntry::kSequenceFieldNumber;
const int ReadEntry::kSequencePairFieldNumber;
const int ReadEntry::kReadLengthPairFieldNumber;
const int ReadEntry::kQualityScoresFieldNumber;
const int ReadEntry::kQualityScoresPairFieldNumber;
const int ReadEntry::kCompressedDataFieldNumber;
const int ReadEntry::kMetaDataFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

ReadEntry::ReadEntry()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:goby.ReadEntry)
}

void ReadEntry::InitAsDefaultInstance() {
}

ReadEntry::ReadEntry(const ReadEntry& from)
  : ::google::protobuf::Message(),
    _internal_metadata_(NULL) {
  SharedCtor();
  MergeFrom(from);
  // @@protoc_insertion_point(copy_constructor:goby.ReadEntry)
}

void ReadEntry::SharedCtor() {
  ::google::protobuf::internal::GetEmptyString();
  _cached_size_ = 0;
  read_index_ = 0u;
  barcode_index_ = 0u;
  read_identifier_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  read_length_ = 0u;
  sequence_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  sequence_pair_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  read_length_pair_ = 0u;
  quality_scores_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  quality_scores_pair_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  compressed_data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ReadEntry::~ReadEntry() {
  // @@protoc_insertion_point(destructor:goby.ReadEntry)
  SharedDtor();
}

void ReadEntry::SharedDtor() {
  read_identifier_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  sequence_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  sequence_pair_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  quality_scores_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  quality_scores_pair_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  compressed_data_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != default_instance_) {
  }
}

void ReadEntry::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* ReadEntry::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return ReadEntry_descriptor_;
}

const ReadEntry& ReadEntry::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_Reads_2eproto();
  return *default_instance_;
}

ReadEntry* ReadEntry::default_instance_ = NULL;

ReadEntry* ReadEntry::New(::google::protobuf::Arena* arena) const {
  ReadEntry* n = new ReadEntry;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void ReadEntry::Clear() {
// @@protoc_insertion_point(message_clear_start:goby.ReadEntry)
#if defined(__clang__)
#define ZR_HELPER_(f) \
  _Pragma("clang diagnostic push") \
  _Pragma("clang diagnostic ignored \"-Winvalid-offsetof\"") \
  __builtin_offsetof(ReadEntry, f) \
  _Pragma("clang diagnostic pop")
#else
#define ZR_HELPER_(f) reinterpret_cast<char*>(\
  &reinterpret_cast<ReadEntry*>(16)->f)
#endif

#define ZR_(first, last) do {\
  ::memset(&first, 0,\
           ZR_HELPER_(last) - ZR_HELPER_(first) + sizeof(last));\
} while (0)

  if (_has_bits_[0 / 32] & 255u) {
    ZR_(read_index_, barcode_index_);
    ZR_(read_length_, read_length_pair_);
    if (has_read_identifier()) {
      read_identifier_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    }
    if (has_description()) {
      description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    }
    if (has_sequence()) {
      sequence_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    }
    if (has_sequence_pair()) {
      sequence_pair_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    }
  }
  if (_has_bits_[8 / 32] & 1792u) {
    if (has_quality_scores()) {
      quality_scores_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    }
    if (has_quality_scores_pair()) {
      quality_scores_pair_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    }
    if (has_compressed_data()) {
      compressed_data_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    }
  }

#undef ZR_HELPER_
#undef ZR_

  meta_data_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  if (_internal_metadata_.have_unknown_fields()) {
    mutable_unknown_fields()->Clear();
  }
}

bool ReadEntry::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:goby.ReadEntry)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(16383);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required uint32 read_index = 1;
      case 1: {
        if (tag == 8) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &read_index_)));
          set_has_read_index();
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(16)) goto parse_read_length;
        break;
      }

      // required uint32 read_length = 2;
      case 2: {
        if (tag == 16) {
         parse_read_length:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &read_length_)));
          set_has_read_length();
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(26)) goto parse_sequence;
        break;
      }

      // optional bytes sequence = 3;
      case 3: {
        if (tag == 26) {
         parse_sequence:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_sequence()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(34)) goto parse_quality_scores;
        break;
      }

      // optional bytes quality_scores = 4;
      case 4: {
        if (tag == 34) {
         parse_quality_scores:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_quality_scores()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(42)) goto parse_sequence_pair;
        break;
      }

      // optional bytes sequence_pair = 5;
      case 5: {
        if (tag == 42) {
         parse_sequence_pair:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_sequence_pair()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(48)) goto parse_read_length_pair;
        break;
      }

      // optional uint32 read_length_pair = 6;
      case 6: {
        if (tag == 48) {
         parse_read_length_pair:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &read_length_pair_)));
          set_has_read_length_pair();
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(58)) goto parse_quality_scores_pair;
        break;
      }

      // optional bytes quality_scores_pair = 7;
      case 7: {
        if (tag == 58) {
         parse_quality_scores_pair:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_quality_scores_pair()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(66)) goto parse_compressed_data;
        break;
      }

      // optional bytes compressed_data = 8;
      case 8: {
        if (tag == 66) {
         parse_compressed_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_compressed_data()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(80)) goto parse_barcode_index;
        break;
      }

      // optional uint32 barcode_index = 10;
      case 10: {
        if (tag == 80) {
         parse_barcode_index:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &barcode_index_)));
          set_has_barcode_index();
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(178)) goto parse_description;
        break;
      }

      // optional string description = 22;
      case 22: {
        if (tag == 178) {
         parse_description:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_description()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
            this->description().data(), this->description().length(),
            ::google::protobuf::internal::WireFormat::PARSE,
            "goby.ReadEntry.description");
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(186)) goto parse_read_identifier;
        break;
      }

      // optional string read_identifier = 23;
      case 23: {
        if (tag == 186) {
         parse_read_identifier:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_read_identifier()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
            this->read_identifier().data(), this->read_identifier().length(),
            ::google::protobuf::internal::WireFormat::PARSE,
            "goby.ReadEntry.read_identifier");
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(202)) goto parse_meta_data;
        break;
      }

      // repeated .goby.MetaData meta_data = 25;
      case 25: {
        if (tag == 202) {
         parse_meta_data:
          DO_(input->IncrementRecursionDepth());
         parse_loop_meta_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth(
                input, add_meta_data()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(202)) goto parse_loop_meta_data;
        input->UnsafeDecrementRecursionDepth();
        if (input->ExpectAtEnd()) goto success;
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:goby.ReadEntry)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:goby.ReadEntry)
  return false;
#undef DO_
}

void ReadEntry::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:goby.ReadEntry)
  // required uint32 read_index = 1;
  if (has_read_index()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->read_index(), output);
  }

  // required uint32 read_length = 2;
  if (has_read_length()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->read_length(), output);
  }

  // optional bytes sequence = 3;
  if (has_sequence()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
      3, this->sequence(), output);
  }

  // optional bytes quality_scores = 4;
  if (has_quality_scores()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
      4, this->quality_scores(), output);
  }

  // optional bytes sequence_pair = 5;
  if (has_sequence_pair()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
      5, this->sequence_pair(), output);
  }

  // optional uint32 read_length_pair = 6;
  if (has_read_length_pair()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->read_length_pair(), output);
  }

  // optional bytes quality_scores_pair = 7;
  if (has_quality_scores_pair()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
      7, this->quality_scores_pair(), output);
  }

  // optional bytes compressed_data = 8;
  if (has_compressed_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
      8, this->compressed_data(), output);
  }

  // optional uint32 barcode_index = 10;
  if (has_barcode_index()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(10, this->barcode_index(), output);
  }

  // optional string description = 22;
  if (has_description()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->description().data(), this->description().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "goby.ReadEntry.description");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      22, this->description(), output);
  }

  // optional string read_identifier = 23;
  if (has_read_identifier()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->read_identifier().data(), this->read_identifier().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "goby.ReadEntry.read_identifier");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      23, this->read_identifier(), output);
  }

  // repeated .goby.MetaData meta_data = 25;
  for (unsigned int i = 0, n = this->meta_data_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      25, this->meta_data(i), output);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:goby.ReadEntry)
}

::google::protobuf::uint8* ReadEntry::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  // @@protoc_insertion_point(serialize_to_array_start:goby.ReadEntry)
  // required uint32 read_index = 1;
  if (has_read_index()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->read_index(), target);
  }

  // required uint32 read_length = 2;
  if (has_read_length()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->read_length(), target);
  }

  // optional bytes sequence = 3;
  if (has_sequence()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        3, this->sequence(), target);
  }

  // optional bytes quality_scores = 4;
  if (has_quality_scores()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        4, this->quality_scores(), target);
  }

  // optional bytes sequence_pair = 5;
  if (has_sequence_pair()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        5, this->sequence_pair(), target);
  }

  // optional uint32 read_length_pair = 6;
  if (has_read_length_pair()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(6, this->read_length_pair(), target);
  }

  // optional bytes quality_scores_pair = 7;
  if (has_quality_scores_pair()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        7, this->quality_scores_pair(), target);
  }

  // optional bytes compressed_data = 8;
  if (has_compressed_data()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        8, this->compressed_data(), target);
  }

  // optional uint32 barcode_index = 10;
  if (has_barcode_index()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(10, this->barcode_index(), target);
  }

  // optional string description = 22;
  if (has_description()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->description().data(), this->description().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "goby.ReadEntry.description");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        22, this->description(), target);
  }

  // optional string read_identifier = 23;
  if (has_read_identifier()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->read_identifier().data(), this->read_identifier().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "goby.ReadEntry.read_identifier");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        23, this->read_identifier(), target);
  }

  // repeated .goby.MetaData meta_data = 25;
  for (unsigned int i = 0, n = this->meta_data_size(); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        25, this->meta_data(i), false, target);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:goby.ReadEntry)
  return target;
}

int ReadEntry::RequiredFieldsByteSizeFallback() const {
// @@protoc_insertion_point(required_fields_byte_size_fallback_start:goby.ReadEntry)
  int total_size = 0;

  if (has_read_index()) {
    // required uint32 read_index = 1;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::UInt32Size(
        this->read_index());
  }

  if (has_read_length()) {
    // required uint32 read_length = 2;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::UInt32Size(
        this->read_length());
  }

  return total_size;
}
int ReadEntry::ByteSize() const {
// @@protoc_insertion_point(message_byte_size_start:goby.ReadEntry)
  int total_size = 0;

  if (((_has_bits_[0] & 0x00000011) ^ 0x00000011) == 0) {  // All required fields are present.
    // required uint32 read_index = 1;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::UInt32Size(
        this->read_index());

    // required uint32 read_length = 2;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::UInt32Size(
        this->read_length());

  } else {
    total_size += RequiredFieldsByteSizeFallback();
  }
  if (_has_bits_[1 / 32] & 238u) {
    // optional uint32 barcode_index = 10;
    if (has_barcode_index()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->barcode_index());
    }

    // optional string read_identifier = 23;
    if (has_read_identifier()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->read_identifier());
    }

    // optional string description = 22;
    if (has_description()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->description());
    }

    // optional bytes sequence = 3;
    if (has_sequence()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->sequence());
    }

    // optional bytes sequence_pair = 5;
    if (has_sequence_pair()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->sequence_pair());
    }

    // optional uint32 read_length_pair = 6;
    if (has_read_length_pair()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->read_length_pair());
    }

  }
  if (_has_bits_[8 / 32] & 1792u) {
    // optional bytes quality_scores = 4;
    if (has_quality_scores()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->quality_scores());
    }

    // optional bytes quality_scores_pair = 7;
    if (has_quality_scores_pair()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->quality_scores_pair());
    }

    // optional bytes compressed_data = 8;
    if (has_compressed_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->compressed_data());
    }

  }
  // repeated .goby.MetaData meta_data = 25;
  total_size += 2 * this->meta_data_size();
  for (int i = 0; i < this->meta_data_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->meta_data(i));
  }

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        unknown_fields());
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ReadEntry::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:goby.ReadEntry)
  if (GOOGLE_PREDICT_FALSE(&from == this)) {
    ::google::protobuf::internal::MergeFromFail(__FILE__, __LINE__);
  }
  const ReadEntry* source = 
      ::google::protobuf::internal::DynamicCastToGenerated<const ReadEntry>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:goby.ReadEntry)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:goby.ReadEntry)
    MergeFrom(*source);
  }
}

void ReadEntry::MergeFrom(const ReadEntry& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:goby.ReadEntry)
  if (GOOGLE_PREDICT_FALSE(&from == this)) {
    ::google::protobuf::internal::MergeFromFail(__FILE__, __LINE__);
  }
  meta_data_.MergeFrom(from.meta_data_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_read_index()) {
      set_read_index(from.read_index());
    }
    if (from.has_barcode_index()) {
      set_barcode_index(from.barcode_index());
    }
    if (from.has_read_identifier()) {
      set_has_read_identifier();
      read_identifier_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.read_identifier_);
    }
    if (from.has_description()) {
      set_has_description();
      description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_);
    }
    if (from.has_read_length()) {
      set_read_length(from.read_length());
    }
    if (from.has_sequence()) {
      set_has_sequence();
      sequence_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sequence_);
    }
    if (from.has_sequence_pair()) {
      set_has_sequence_pair();
      sequence_pair_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sequence_pair_);
    }
    if (from.has_read_length_pair()) {
      set_read_length_pair(from.read_length_pair());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_quality_scores()) {
      set_has_quality_scores();
      quality_scores_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.quality_scores_);
    }
    if (from.has_quality_scores_pair()) {
      set_has_quality_scores_pair();
      quality_scores_pair_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.quality_scores_pair_);
    }
    if (from.has_compressed_data()) {
      set_has_compressed_data();
      compressed_data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.compressed_data_);
    }
  }
  if (from._internal_metadata_.have_unknown_fields()) {
    mutable_unknown_fields()->MergeFrom(from.unknown_fields());
  }
}

void ReadEntry::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:goby.ReadEntry)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ReadEntry::CopyFrom(const ReadEntry& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:goby.ReadEntry)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ReadEntry::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000011) != 0x00000011) return false;

  if (!::google::protobuf::internal::AllAreInitialized(this->meta_data())) return false;
  return true;
}

void ReadEntry::Swap(ReadEntry* other) {
  if (other == this) return;
  InternalSwap(other);
}
void ReadEntry::InternalSwap(ReadEntry* other) {
  std::swap(read_index_, other->read_index_);
  std::swap(barcode_index_, other->barcode_index_);
  read_identifier_.Swap(&other->read_identifier_);
  description_.Swap(&other->description_);
  std::swap(read_length_, other->read_length_);
  sequence_.Swap(&other->sequence_);
  sequence_pair_.Swap(&other->sequence_pair_);
  std::swap(read_length_pair_, other->read_length_pair_);
  quality_scores_.Swap(&other->quality_scores_);
  quality_scores_pair_.Swap(&other->quality_scores_pair_);
  compressed_data_.Swap(&other->compressed_data_);
  meta_data_.UnsafeArenaSwap(&other->meta_data_);
  std::swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  std::swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata ReadEntry::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = ReadEntry_descriptor_;
  metadata.reflection = ReadEntry_reflection_;
  return metadata;
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// ReadEntry

// required uint32 read_index = 1;
bool ReadEntry::has_read_index() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
void ReadEntry::set_has_read_index() {
  _has_bits_[0] |= 0x00000001u;
}
void ReadEntry::clear_has_read_index() {
  _has_bits_[0] &= ~0x00000001u;
}
void ReadEntry::clear_read_index() {
  read_index_ = 0u;
  clear_has_read_index();
}
 ::google::protobuf::uint32 ReadEntry::read_index() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.read_index)
  return read_index_;
}
 void ReadEntry::set_read_index(::google::protobuf::uint32 value) {
  set_has_read_index();
  read_index_ = value;
  // @@protoc_insertion_point(field_set:goby.ReadEntry.read_index)
}

// optional uint32 barcode_index = 10;
bool ReadEntry::has_barcode_index() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
void ReadEntry::set_has_barcode_index() {
  _has_bits_[0] |= 0x00000002u;
}
void ReadEntry::clear_has_barcode_index() {
  _has_bits_[0] &= ~0x00000002u;
}
void ReadEntry::clear_barcode_index() {
  barcode_index_ = 0u;
  clear_has_barcode_index();
}
 ::google::protobuf::uint32 ReadEntry::barcode_index() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.barcode_index)
  return barcode_index_;
}
 void ReadEntry::set_barcode_index(::google::protobuf::uint32 value) {
  set_has_barcode_index();
  barcode_index_ = value;
  // @@protoc_insertion_point(field_set:goby.ReadEntry.barcode_index)
}

// optional string read_identifier = 23;
bool ReadEntry::has_read_identifier() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
void ReadEntry::set_has_read_identifier() {
  _has_bits_[0] |= 0x00000004u;
}
void ReadEntry::clear_has_read_identifier() {
  _has_bits_[0] &= ~0x00000004u;
}
void ReadEntry::clear_read_identifier() {
  read_identifier_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_read_identifier();
}
 const ::std::string& ReadEntry::read_identifier() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.read_identifier)
  return read_identifier_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_read_identifier(const ::std::string& value) {
  set_has_read_identifier();
  read_identifier_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:goby.ReadEntry.read_identifier)
}
 void ReadEntry::set_read_identifier(const char* value) {
  set_has_read_identifier();
  read_identifier_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:goby.ReadEntry.read_identifier)
}
 void ReadEntry::set_read_identifier(const char* value, size_t size) {
  set_has_read_identifier();
  read_identifier_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:goby.ReadEntry.read_identifier)
}
 ::std::string* ReadEntry::mutable_read_identifier() {
  set_has_read_identifier();
  // @@protoc_insertion_point(field_mutable:goby.ReadEntry.read_identifier)
  return read_identifier_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 ::std::string* ReadEntry::release_read_identifier() {
  // @@protoc_insertion_point(field_release:goby.ReadEntry.read_identifier)
  clear_has_read_identifier();
  return read_identifier_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_allocated_read_identifier(::std::string* read_identifier) {
  if (read_identifier != NULL) {
    set_has_read_identifier();
  } else {
    clear_has_read_identifier();
  }
  read_identifier_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), read_identifier);
  // @@protoc_insertion_point(field_set_allocated:goby.ReadEntry.read_identifier)
}

// optional string description = 22;
bool ReadEntry::has_description() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
void ReadEntry::set_has_description() {
  _has_bits_[0] |= 0x00000008u;
}
void ReadEntry::clear_has_description() {
  _has_bits_[0] &= ~0x00000008u;
}
void ReadEntry::clear_description() {
  description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_description();
}
 const ::std::string& ReadEntry::description() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.description)
  return description_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_description(const ::std::string& value) {
  set_has_description();
  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:goby.ReadEntry.description)
}
 void ReadEntry::set_description(const char* value) {
  set_has_description();
  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:goby.ReadEntry.description)
}
 void ReadEntry::set_description(const char* value, size_t size) {
  set_has_description();
  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:goby.ReadEntry.description)
}
 ::std::string* ReadEntry::mutable_description() {
  set_has_description();
  // @@protoc_insertion_point(field_mutable:goby.ReadEntry.description)
  return description_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 ::std::string* ReadEntry::release_description() {
  // @@protoc_insertion_point(field_release:goby.ReadEntry.description)
  clear_has_description();
  return description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_allocated_description(::std::string* description) {
  if (description != NULL) {
    set_has_description();
  } else {
    clear_has_description();
  }
  description_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description);
  // @@protoc_insertion_point(field_set_allocated:goby.ReadEntry.description)
}

// required uint32 read_length = 2;
bool ReadEntry::has_read_length() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
void ReadEntry::set_has_read_length() {
  _has_bits_[0] |= 0x00000010u;
}
void ReadEntry::clear_has_read_length() {
  _has_bits_[0] &= ~0x00000010u;
}
void ReadEntry::clear_read_length() {
  read_length_ = 0u;
  clear_has_read_length();
}
 ::google::protobuf::uint32 ReadEntry::read_length() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.read_length)
  return read_length_;
}
 void ReadEntry::set_read_length(::google::protobuf::uint32 value) {
  set_has_read_length();
  read_length_ = value;
  // @@protoc_insertion_point(field_set:goby.ReadEntry.read_length)
}

// optional bytes sequence = 3;
bool ReadEntry::has_sequence() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
void ReadEntry::set_has_sequence() {
  _has_bits_[0] |= 0x00000020u;
}
void ReadEntry::clear_has_sequence() {
  _has_bits_[0] &= ~0x00000020u;
}
void ReadEntry::clear_sequence() {
  sequence_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_sequence();
}
 const ::std::string& ReadEntry::sequence() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.sequence)
  return sequence_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_sequence(const ::std::string& value) {
  set_has_sequence();
  sequence_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:goby.ReadEntry.sequence)
}
 void ReadEntry::set_sequence(const char* value) {
  set_has_sequence();
  sequence_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:goby.ReadEntry.sequence)
}
 void ReadEntry::set_sequence(const void* value, size_t size) {
  set_has_sequence();
  sequence_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:goby.ReadEntry.sequence)
}
 ::std::string* ReadEntry::mutable_sequence() {
  set_has_sequence();
  // @@protoc_insertion_point(field_mutable:goby.ReadEntry.sequence)
  return sequence_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 ::std::string* ReadEntry::release_sequence() {
  // @@protoc_insertion_point(field_release:goby.ReadEntry.sequence)
  clear_has_sequence();
  return sequence_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_allocated_sequence(::std::string* sequence) {
  if (sequence != NULL) {
    set_has_sequence();
  } else {
    clear_has_sequence();
  }
  sequence_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), sequence);
  // @@protoc_insertion_point(field_set_allocated:goby.ReadEntry.sequence)
}

// optional bytes sequence_pair = 5;
bool ReadEntry::has_sequence_pair() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
void ReadEntry::set_has_sequence_pair() {
  _has_bits_[0] |= 0x00000040u;
}
void ReadEntry::clear_has_sequence_pair() {
  _has_bits_[0] &= ~0x00000040u;
}
void ReadEntry::clear_sequence_pair() {
  sequence_pair_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_sequence_pair();
}
 const ::std::string& ReadEntry::sequence_pair() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.sequence_pair)
  return sequence_pair_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_sequence_pair(const ::std::string& value) {
  set_has_sequence_pair();
  sequence_pair_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:goby.ReadEntry.sequence_pair)
}
 void ReadEntry::set_sequence_pair(const char* value) {
  set_has_sequence_pair();
  sequence_pair_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:goby.ReadEntry.sequence_pair)
}
 void ReadEntry::set_sequence_pair(const void* value, size_t size) {
  set_has_sequence_pair();
  sequence_pair_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:goby.ReadEntry.sequence_pair)
}
 ::std::string* ReadEntry::mutable_sequence_pair() {
  set_has_sequence_pair();
  // @@protoc_insertion_point(field_mutable:goby.ReadEntry.sequence_pair)
  return sequence_pair_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 ::std::string* ReadEntry::release_sequence_pair() {
  // @@protoc_insertion_point(field_release:goby.ReadEntry.sequence_pair)
  clear_has_sequence_pair();
  return sequence_pair_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_allocated_sequence_pair(::std::string* sequence_pair) {
  if (sequence_pair != NULL) {
    set_has_sequence_pair();
  } else {
    clear_has_sequence_pair();
  }
  sequence_pair_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), sequence_pair);
  // @@protoc_insertion_point(field_set_allocated:goby.ReadEntry.sequence_pair)
}

// optional uint32 read_length_pair = 6;
bool ReadEntry::has_read_length_pair() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
void ReadEntry::set_has_read_length_pair() {
  _has_bits_[0] |= 0x00000080u;
}
void ReadEntry::clear_has_read_length_pair() {
  _has_bits_[0] &= ~0x00000080u;
}
void ReadEntry::clear_read_length_pair() {
  read_length_pair_ = 0u;
  clear_has_read_length_pair();
}
 ::google::protobuf::uint32 ReadEntry::read_length_pair() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.read_length_pair)
  return read_length_pair_;
}
 void ReadEntry::set_read_length_pair(::google::protobuf::uint32 value) {
  set_has_read_length_pair();
  read_length_pair_ = value;
  // @@protoc_insertion_point(field_set:goby.ReadEntry.read_length_pair)
}

// optional bytes quality_scores = 4;
bool ReadEntry::has_quality_scores() const {
  return (_has_bits_[0] & 0x00000100u) != 0;
}
void ReadEntry::set_has_quality_scores() {
  _has_bits_[0] |= 0x00000100u;
}
void ReadEntry::clear_has_quality_scores() {
  _has_bits_[0] &= ~0x00000100u;
}
void ReadEntry::clear_quality_scores() {
  quality_scores_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_quality_scores();
}
 const ::std::string& ReadEntry::quality_scores() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.quality_scores)
  return quality_scores_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_quality_scores(const ::std::string& value) {
  set_has_quality_scores();
  quality_scores_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:goby.ReadEntry.quality_scores)
}
 void ReadEntry::set_quality_scores(const char* value) {
  set_has_quality_scores();
  quality_scores_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:goby.ReadEntry.quality_scores)
}
 void ReadEntry::set_quality_scores(const void* value, size_t size) {
  set_has_quality_scores();
  quality_scores_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:goby.ReadEntry.quality_scores)
}
 ::std::string* ReadEntry::mutable_quality_scores() {
  set_has_quality_scores();
  // @@protoc_insertion_point(field_mutable:goby.ReadEntry.quality_scores)
  return quality_scores_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 ::std::string* ReadEntry::release_quality_scores() {
  // @@protoc_insertion_point(field_release:goby.ReadEntry.quality_scores)
  clear_has_quality_scores();
  return quality_scores_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_allocated_quality_scores(::std::string* quality_scores) {
  if (quality_scores != NULL) {
    set_has_quality_scores();
  } else {
    clear_has_quality_scores();
  }
  quality_scores_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), quality_scores);
  // @@protoc_insertion_point(field_set_allocated:goby.ReadEntry.quality_scores)
}

// optional bytes quality_scores_pair = 7;
bool ReadEntry::has_quality_scores_pair() const {
  return (_has_bits_[0] & 0x00000200u) != 0;
}
void ReadEntry::set_has_quality_scores_pair() {
  _has_bits_[0] |= 0x00000200u;
}
void ReadEntry::clear_has_quality_scores_pair() {
  _has_bits_[0] &= ~0x00000200u;
}
void ReadEntry::clear_quality_scores_pair() {
  quality_scores_pair_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_quality_scores_pair();
}
 const ::std::string& ReadEntry::quality_scores_pair() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.quality_scores_pair)
  return quality_scores_pair_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_quality_scores_pair(const ::std::string& value) {
  set_has_quality_scores_pair();
  quality_scores_pair_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:goby.ReadEntry.quality_scores_pair)
}
 void ReadEntry::set_quality_scores_pair(const char* value) {
  set_has_quality_scores_pair();
  quality_scores_pair_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:goby.ReadEntry.quality_scores_pair)
}
 void ReadEntry::set_quality_scores_pair(const void* value, size_t size) {
  set_has_quality_scores_pair();
  quality_scores_pair_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:goby.ReadEntry.quality_scores_pair)
}
 ::std::string* ReadEntry::mutable_quality_scores_pair() {
  set_has_quality_scores_pair();
  // @@protoc_insertion_point(field_mutable:goby.ReadEntry.quality_scores_pair)
  return quality_scores_pair_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 ::std::string* ReadEntry::release_quality_scores_pair() {
  // @@protoc_insertion_point(field_release:goby.ReadEntry.quality_scores_pair)
  clear_has_quality_scores_pair();
  return quality_scores_pair_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_allocated_quality_scores_pair(::std::string* quality_scores_pair) {
  if (quality_scores_pair != NULL) {
    set_has_quality_scores_pair();
  } else {
    clear_has_quality_scores_pair();
  }
  quality_scores_pair_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), quality_scores_pair);
  // @@protoc_insertion_point(field_set_allocated:goby.ReadEntry.quality_scores_pair)
}

// optional bytes compressed_data = 8;
bool ReadEntry::has_compressed_data() const {
  return (_has_bits_[0] & 0x00000400u) != 0;
}
void ReadEntry::set_has_compressed_data() {
  _has_bits_[0] |= 0x00000400u;
}
void ReadEntry::clear_has_compressed_data() {
  _has_bits_[0] &= ~0x00000400u;
}
void ReadEntry::clear_compressed_data() {
  compressed_data_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_compressed_data();
}
 const ::std::string& ReadEntry::compressed_data() const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.compressed_data)
  return compressed_data_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_compressed_data(const ::std::string& value) {
  set_has_compressed_data();
  compressed_data_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:goby.ReadEntry.compressed_data)
}
 void ReadEntry::set_compressed_data(const char* value) {
  set_has_compressed_data();
  compressed_data_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:goby.ReadEntry.compressed_data)
}
 void ReadEntry::set_compressed_data(const void* value, size_t size) {
  set_has_compressed_data();
  compressed_data_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:goby.ReadEntry.compressed_data)
}
 ::std::string* ReadEntry::mutable_compressed_data() {
  set_has_compressed_data();
  // @@protoc_insertion_point(field_mutable:goby.ReadEntry.compressed_data)
  return compressed_data_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 ::std::string* ReadEntry::release_compressed_data() {
  // @@protoc_insertion_point(field_release:goby.ReadEntry.compressed_data)
  clear_has_compressed_data();
  return compressed_data_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void ReadEntry::set_allocated_compressed_data(::std::string* compressed_data) {
  if (compressed_data != NULL) {
    set_has_compressed_data();
  } else {
    clear_has_compressed_data();
  }
  compressed_data_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), compressed_data);
  // @@protoc_insertion_point(field_set_allocated:goby.ReadEntry.compressed_data)
}

// repeated .goby.MetaData meta_data = 25;
int ReadEntry::meta_data_size() const {
  return meta_data_.size();
}
void ReadEntry::clear_meta_data() {
  meta_data_.Clear();
}
const ::goby::MetaData& ReadEntry::meta_data(int index) const {
  // @@protoc_insertion_point(field_get:goby.ReadEntry.meta_data)
  return meta_data_.Get(index);
}
::goby::MetaData* ReadEntry::mutable_meta_data(int index) {
  // @@protoc_insertion_point(field_mutable:goby.ReadEntry.meta_data)
  return meta_data_.Mutable(index);
}
::goby::MetaData* ReadEntry::add_meta_data() {
  // @@protoc_insertion_point(field_add:goby.ReadEntry.meta_data)
  return meta_data_.Add();
}
::google::protobuf::RepeatedPtrField< ::goby::MetaData >*
ReadEntry::mutable_meta_data() {
  // @@protoc_insertion_point(field_mutable_list:goby.ReadEntry.meta_data)
  return &meta_data_;
}
const ::google::protobuf::RepeatedPtrField< ::goby::MetaData >&
ReadEntry::meta_data() const {
  // @@protoc_insertion_point(field_list:goby.ReadEntry.meta_data)
  return meta_data_;
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

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

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int MetaData::kKeyFieldNumber;
const int MetaData::kValueFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

MetaData::MetaData()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:goby.MetaData)
}

void MetaData::InitAsDefaultInstance() {
}

MetaData::MetaData(const MetaData& from)
  : ::google::protobuf::Message(),
    _internal_metadata_(NULL) {
  SharedCtor();
  MergeFrom(from);
  // @@protoc_insertion_point(copy_constructor:goby.MetaData)
}

void MetaData::SharedCtor() {
  ::google::protobuf::internal::GetEmptyString();
  _cached_size_ = 0;
  key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

MetaData::~MetaData() {
  // @@protoc_insertion_point(destructor:goby.MetaData)
  SharedDtor();
}

void MetaData::SharedDtor() {
  key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  value_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != default_instance_) {
  }
}

void MetaData::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* MetaData::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return MetaData_descriptor_;
}

const MetaData& MetaData::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_Reads_2eproto();
  return *default_instance_;
}

MetaData* MetaData::default_instance_ = NULL;

MetaData* MetaData::New(::google::protobuf::Arena* arena) const {
  MetaData* n = new MetaData;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void MetaData::Clear() {
// @@protoc_insertion_point(message_clear_start:goby.MetaData)
  if (_has_bits_[0 / 32] & 3u) {
    if (has_key()) {
      key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    }
    if (has_value()) {
      value_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  if (_internal_metadata_.have_unknown_fields()) {
    mutable_unknown_fields()->Clear();
  }
}

bool MetaData::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:goby.MetaData)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(127);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required string key = 1;
      case 1: {
        if (tag == 10) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_key()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
            this->key().data(), this->key().length(),
            ::google::protobuf::internal::WireFormat::PARSE,
            "goby.MetaData.key");
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(18)) goto parse_value;
        break;
      }

      // required string value = 2;
      case 2: {
        if (tag == 18) {
         parse_value:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_value()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
            this->value().data(), this->value().length(),
            ::google::protobuf::internal::WireFormat::PARSE,
            "goby.MetaData.value");
        } else {
          goto handle_unusual;
        }
        if (input->ExpectAtEnd()) goto success;
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:goby.MetaData)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:goby.MetaData)
  return false;
#undef DO_
}

void MetaData::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:goby.MetaData)
  // required string key = 1;
  if (has_key()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->key().data(), this->key().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "goby.MetaData.key");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->key(), output);
  }

  // required string value = 2;
  if (has_value()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->value().data(), this->value().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "goby.MetaData.value");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->value(), output);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:goby.MetaData)
}

::google::protobuf::uint8* MetaData::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  // @@protoc_insertion_point(serialize_to_array_start:goby.MetaData)
  // required string key = 1;
  if (has_key()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->key().data(), this->key().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "goby.MetaData.key");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->key(), target);
  }

  // required string value = 2;
  if (has_value()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->value().data(), this->value().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "goby.MetaData.value");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->value(), target);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:goby.MetaData)
  return target;
}

int MetaData::RequiredFieldsByteSizeFallback() const {
// @@protoc_insertion_point(required_fields_byte_size_fallback_start:goby.MetaData)
  int total_size = 0;

  if (has_key()) {
    // required string key = 1;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->key());
  }

  if (has_value()) {
    // required string value = 2;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->value());
  }

  return total_size;
}
int MetaData::ByteSize() const {
// @@protoc_insertion_point(message_byte_size_start:goby.MetaData)
  int total_size = 0;

  if (((_has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
    // required string key = 1;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->key());

    // required string value = 2;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->value());

  } else {
    total_size += RequiredFieldsByteSizeFallback();
  }
  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        unknown_fields());
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void MetaData::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:goby.MetaData)
  if (GOOGLE_PREDICT_FALSE(&from == this)) {
    ::google::protobuf::internal::MergeFromFail(__FILE__, __LINE__);
  }
  const MetaData* source = 
      ::google::protobuf::internal::DynamicCastToGenerated<const MetaData>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:goby.MetaData)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:goby.MetaData)
    MergeFrom(*source);
  }
}

void MetaData::MergeFrom(const MetaData& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:goby.MetaData)
  if (GOOGLE_PREDICT_FALSE(&from == this)) {
    ::google::protobuf::internal::MergeFromFail(__FILE__, __LINE__);
  }
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_key()) {
      set_has_key();
      key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.key_);
    }
    if (from.has_value()) {
      set_has_value();
      value_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.value_);
    }
  }
  if (from._internal_metadata_.have_unknown_fields()) {
    mutable_unknown_fields()->MergeFrom(from.unknown_fields());
  }
}

void MetaData::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:goby.MetaData)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void MetaData::CopyFrom(const MetaData& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:goby.MetaData)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MetaData::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;

  return true;
}

void MetaData::Swap(MetaData* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MetaData::InternalSwap(MetaData* other) {
  key_.Swap(&other->key_);
  value_.Swap(&other->value_);
  std::swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  std::swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata MetaData::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = MetaData_descriptor_;
  metadata.reflection = MetaData_reflection_;
  return metadata;
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// MetaData

// required string key = 1;
bool MetaData::has_key() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
void MetaData::set_has_key() {
  _has_bits_[0] |= 0x00000001u;
}
void MetaData::clear_has_key() {
  _has_bits_[0] &= ~0x00000001u;
}
void MetaData::clear_key() {
  key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_key();
}
 const ::std::string& MetaData::key() const {
  // @@protoc_insertion_point(field_get:goby.MetaData.key)
  return key_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void MetaData::set_key(const ::std::string& value) {
  set_has_key();
  key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:goby.MetaData.key)
}
 void MetaData::set_key(const char* value) {
  set_has_key();
  key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:goby.MetaData.key)
}
 void MetaData::set_key(const char* value, size_t size) {
  set_has_key();
  key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:goby.MetaData.key)
}
 ::std::string* MetaData::mutable_key() {
  set_has_key();
  // @@protoc_insertion_point(field_mutable:goby.MetaData.key)
  return key_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 ::std::string* MetaData::release_key() {
  // @@protoc_insertion_point(field_release:goby.MetaData.key)
  clear_has_key();
  return key_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void MetaData::set_allocated_key(::std::string* key) {
  if (key != NULL) {
    set_has_key();
  } else {
    clear_has_key();
  }
  key_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), key);
  // @@protoc_insertion_point(field_set_allocated:goby.MetaData.key)
}

// required string value = 2;
bool MetaData::has_value() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
void MetaData::set_has_value() {
  _has_bits_[0] |= 0x00000002u;
}
void MetaData::clear_has_value() {
  _has_bits_[0] &= ~0x00000002u;
}
void MetaData::clear_value() {
  value_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_value();
}
 const ::std::string& MetaData::value() const {
  // @@protoc_insertion_point(field_get:goby.MetaData.value)
  return value_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void MetaData::set_value(const ::std::string& value) {
  set_has_value();
  value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:goby.MetaData.value)
}
 void MetaData::set_value(const char* value) {
  set_has_value();
  value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:goby.MetaData.value)
}
 void MetaData::set_value(const char* value, size_t size) {
  set_has_value();
  value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:goby.MetaData.value)
}
 ::std::string* MetaData::mutable_value() {
  set_has_value();
  // @@protoc_insertion_point(field_mutable:goby.MetaData.value)
  return value_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 ::std::string* MetaData::release_value() {
  // @@protoc_insertion_point(field_release:goby.MetaData.value)
  clear_has_value();
  return value_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
 void MetaData::set_allocated_value(::std::string* value) {
  if (value != NULL) {
    set_has_value();
  } else {
    clear_has_value();
  }
  value_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set_allocated:goby.MetaData.value)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// @@protoc_insertion_point(namespace_scope)

}  // namespace goby

// @@protoc_insertion_point(global_scope)
