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

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

#include <algorithm>

#include <google/protobuf/stubs/common.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 quipper {

namespace {

const ::google::protobuf::Descriptor* PerfDataProto_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfEventAttr_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfEventAttr_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfFileAttr_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfFileAttr_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfEventType_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfEventType_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_SampleInfo_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_SampleInfo_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_CommEvent_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_CommEvent_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_MMapEvent_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_MMapEvent_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_BranchStackEntry_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_BranchStackEntry_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_SampleEvent_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_SampleEvent_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_ForkEvent_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_ForkEvent_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_LostEvent_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_LostEvent_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_ThrottleEvent_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_ThrottleEvent_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_ReadEvent_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_ReadEvent_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_EventHeader_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_EventHeader_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfEvent_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfEvent_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfEventStats_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfEventStats_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfUint32Metadata_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfUint32Metadata_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfUint64Metadata_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfUint64Metadata_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfTracingMetadata_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfTracingMetadata_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfBuildID_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfBuildID_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfCPUTopologyMetadata_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfCPUTopologyMetadata_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_PerfNodeTopologyMetadata_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_PerfNodeTopologyMetadata_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_StringMetadata_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_StringMetadata_reflection_ = NULL;
const ::google::protobuf::Descriptor* PerfDataProto_StringMetadata_StringAndMd5sumPrefix_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  PerfDataProto_StringMetadata_StringAndMd5sumPrefix_reflection_ = NULL;

}  // namespace


void protobuf_AssignDesc_perf_5fdata_2eproto() {
  protobuf_AddDesc_perf_5fdata_2eproto();
  const ::google::protobuf::FileDescriptor* file =
    ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
      "perf_data.proto");
  GOOGLE_CHECK(file != NULL);
  PerfDataProto_descriptor_ = file->message_type(0);
  static const int PerfDataProto_offsets_[13] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, file_attrs_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, events_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, event_types_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, timestamp_sec_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, stats_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, metadata_mask_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, tracing_data_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, build_ids_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, uint32_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, uint64_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, cpu_topology_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, numa_topology_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, string_metadata_),
  };
  PerfDataProto_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_descriptor_,
      PerfDataProto::default_instance_,
      PerfDataProto_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto));
  PerfDataProto_PerfEventAttr_descriptor_ = PerfDataProto_descriptor_->nested_type(0);
  static const int PerfDataProto_PerfEventAttr_offsets_[41] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, size_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, config_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, sample_period_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, sample_freq_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, sample_type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, read_format_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, disabled_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, inherit_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, pinned_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, exclusive_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, exclude_user_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, exclude_kernel_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, exclude_hv_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, exclude_idle_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, mmap_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, comm_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, freq_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, inherit_stat_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, enable_on_exec_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, task_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, watermark_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, precise_ip_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, mmap_data_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, sample_id_all_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, exclude_host_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, exclude_guest_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, exclude_callchain_kernel_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, exclude_callchain_user_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, mmap2_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, comm_exec_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, wakeup_events_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, wakeup_watermark_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, bp_type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, bp_addr_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, config1_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, bp_len_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, config2_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, branch_sample_type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, sample_regs_user_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, sample_stack_user_),
  };
  PerfDataProto_PerfEventAttr_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfEventAttr_descriptor_,
      PerfDataProto_PerfEventAttr::default_instance_,
      PerfDataProto_PerfEventAttr_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventAttr, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfEventAttr));
  PerfDataProto_PerfFileAttr_descriptor_ = PerfDataProto_descriptor_->nested_type(1);
  static const int PerfDataProto_PerfFileAttr_offsets_[2] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfFileAttr, attr_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfFileAttr, ids_),
  };
  PerfDataProto_PerfFileAttr_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfFileAttr_descriptor_,
      PerfDataProto_PerfFileAttr::default_instance_,
      PerfDataProto_PerfFileAttr_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfFileAttr, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfFileAttr, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfFileAttr));
  PerfDataProto_PerfEventType_descriptor_ = PerfDataProto_descriptor_->nested_type(2);
  static const int PerfDataProto_PerfEventType_offsets_[3] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventType, id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventType, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventType, name_md5_prefix_),
  };
  PerfDataProto_PerfEventType_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfEventType_descriptor_,
      PerfDataProto_PerfEventType::default_instance_,
      PerfDataProto_PerfEventType_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventType, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventType, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfEventType));
  PerfDataProto_SampleInfo_descriptor_ = PerfDataProto_descriptor_->nested_type(3);
  static const int PerfDataProto_SampleInfo_offsets_[5] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleInfo, pid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleInfo, tid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleInfo, sample_time_ns_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleInfo, id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleInfo, cpu_),
  };
  PerfDataProto_SampleInfo_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_SampleInfo_descriptor_,
      PerfDataProto_SampleInfo::default_instance_,
      PerfDataProto_SampleInfo_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleInfo, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleInfo, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_SampleInfo));
  PerfDataProto_CommEvent_descriptor_ = PerfDataProto_descriptor_->nested_type(4);
  static const int PerfDataProto_CommEvent_offsets_[6] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_CommEvent, pid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_CommEvent, tid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_CommEvent, comm_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_CommEvent, comm_md5_prefix_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_CommEvent, sample_time_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_CommEvent, sample_info_),
  };
  PerfDataProto_CommEvent_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_CommEvent_descriptor_,
      PerfDataProto_CommEvent::default_instance_,
      PerfDataProto_CommEvent_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_CommEvent, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_CommEvent, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_CommEvent));
  PerfDataProto_MMapEvent_descriptor_ = PerfDataProto_descriptor_->nested_type(5);
  static const int PerfDataProto_MMapEvent_offsets_[14] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, pid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, tid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, start_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, len_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, pgoff_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, maj_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, min_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, ino_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, ino_generation_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, prot_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, flags_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, filename_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, filename_md5_prefix_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, sample_info_),
  };
  PerfDataProto_MMapEvent_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_MMapEvent_descriptor_,
      PerfDataProto_MMapEvent::default_instance_,
      PerfDataProto_MMapEvent_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_MMapEvent, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_MMapEvent));
  PerfDataProto_BranchStackEntry_descriptor_ = PerfDataProto_descriptor_->nested_type(6);
  static const int PerfDataProto_BranchStackEntry_offsets_[3] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_BranchStackEntry, from_ip_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_BranchStackEntry, to_ip_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_BranchStackEntry, mispredicted_),
  };
  PerfDataProto_BranchStackEntry_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_BranchStackEntry_descriptor_,
      PerfDataProto_BranchStackEntry::default_instance_,
      PerfDataProto_BranchStackEntry_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_BranchStackEntry, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_BranchStackEntry, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_BranchStackEntry));
  PerfDataProto_SampleEvent_descriptor_ = PerfDataProto_descriptor_->nested_type(7);
  static const int PerfDataProto_SampleEvent_offsets_[12] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, ip_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, pid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, tid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, sample_time_ns_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, addr_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, stream_id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, period_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, cpu_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, raw_size_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, callchain_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, branch_stack_),
  };
  PerfDataProto_SampleEvent_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_SampleEvent_descriptor_,
      PerfDataProto_SampleEvent::default_instance_,
      PerfDataProto_SampleEvent_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_SampleEvent, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_SampleEvent));
  PerfDataProto_ForkEvent_descriptor_ = PerfDataProto_descriptor_->nested_type(8);
  static const int PerfDataProto_ForkEvent_offsets_[6] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ForkEvent, pid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ForkEvent, ppid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ForkEvent, tid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ForkEvent, ptid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ForkEvent, fork_time_ns_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ForkEvent, sample_info_),
  };
  PerfDataProto_ForkEvent_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_ForkEvent_descriptor_,
      PerfDataProto_ForkEvent::default_instance_,
      PerfDataProto_ForkEvent_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ForkEvent, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ForkEvent, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_ForkEvent));
  PerfDataProto_LostEvent_descriptor_ = PerfDataProto_descriptor_->nested_type(9);
  static const int PerfDataProto_LostEvent_offsets_[3] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_LostEvent, id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_LostEvent, lost_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_LostEvent, sample_info_),
  };
  PerfDataProto_LostEvent_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_LostEvent_descriptor_,
      PerfDataProto_LostEvent::default_instance_,
      PerfDataProto_LostEvent_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_LostEvent, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_LostEvent, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_LostEvent));
  PerfDataProto_ThrottleEvent_descriptor_ = PerfDataProto_descriptor_->nested_type(10);
  static const int PerfDataProto_ThrottleEvent_offsets_[4] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ThrottleEvent, time_ns_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ThrottleEvent, id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ThrottleEvent, stream_id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ThrottleEvent, sample_info_),
  };
  PerfDataProto_ThrottleEvent_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_ThrottleEvent_descriptor_,
      PerfDataProto_ThrottleEvent::default_instance_,
      PerfDataProto_ThrottleEvent_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ThrottleEvent, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ThrottleEvent, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_ThrottleEvent));
  PerfDataProto_ReadEvent_descriptor_ = PerfDataProto_descriptor_->nested_type(11);
  static const int PerfDataProto_ReadEvent_offsets_[7] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ReadEvent, pid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ReadEvent, tid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ReadEvent, value_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ReadEvent, time_enabled_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ReadEvent, time_running_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ReadEvent, id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ReadEvent, sample_info_),
  };
  PerfDataProto_ReadEvent_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_ReadEvent_descriptor_,
      PerfDataProto_ReadEvent::default_instance_,
      PerfDataProto_ReadEvent_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ReadEvent, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_ReadEvent, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_ReadEvent));
  PerfDataProto_EventHeader_descriptor_ = PerfDataProto_descriptor_->nested_type(12);
  static const int PerfDataProto_EventHeader_offsets_[3] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_EventHeader, type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_EventHeader, misc_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_EventHeader, size_),
  };
  PerfDataProto_EventHeader_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_EventHeader_descriptor_,
      PerfDataProto_EventHeader::default_instance_,
      PerfDataProto_EventHeader_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_EventHeader, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_EventHeader, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_EventHeader));
  PerfDataProto_PerfEvent_descriptor_ = PerfDataProto_descriptor_->nested_type(13);
  static const int PerfDataProto_PerfEvent_offsets_[8] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, header_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, mmap_event_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, sample_event_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, comm_event_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, fork_event_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, lost_event_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, throttle_event_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, read_event_),
  };
  PerfDataProto_PerfEvent_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfEvent_descriptor_,
      PerfDataProto_PerfEvent::default_instance_,
      PerfDataProto_PerfEvent_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEvent, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfEvent));
  PerfDataProto_PerfEventStats_descriptor_ = PerfDataProto_descriptor_->nested_type(14);
  static const int PerfDataProto_PerfEventStats_offsets_[7] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventStats, num_events_read_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventStats, num_sample_events_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventStats, num_mmap_events_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventStats, num_fork_events_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventStats, num_exit_events_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventStats, num_sample_events_mapped_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventStats, did_remap_),
  };
  PerfDataProto_PerfEventStats_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfEventStats_descriptor_,
      PerfDataProto_PerfEventStats::default_instance_,
      PerfDataProto_PerfEventStats_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventStats, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfEventStats, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfEventStats));
  PerfDataProto_PerfUint32Metadata_descriptor_ = PerfDataProto_descriptor_->nested_type(15);
  static const int PerfDataProto_PerfUint32Metadata_offsets_[2] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfUint32Metadata, type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfUint32Metadata, data_),
  };
  PerfDataProto_PerfUint32Metadata_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfUint32Metadata_descriptor_,
      PerfDataProto_PerfUint32Metadata::default_instance_,
      PerfDataProto_PerfUint32Metadata_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfUint32Metadata, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfUint32Metadata, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfUint32Metadata));
  PerfDataProto_PerfUint64Metadata_descriptor_ = PerfDataProto_descriptor_->nested_type(16);
  static const int PerfDataProto_PerfUint64Metadata_offsets_[2] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfUint64Metadata, type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfUint64Metadata, data_),
  };
  PerfDataProto_PerfUint64Metadata_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfUint64Metadata_descriptor_,
      PerfDataProto_PerfUint64Metadata::default_instance_,
      PerfDataProto_PerfUint64Metadata_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfUint64Metadata, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfUint64Metadata, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfUint64Metadata));
  PerfDataProto_PerfTracingMetadata_descriptor_ = PerfDataProto_descriptor_->nested_type(17);
  static const int PerfDataProto_PerfTracingMetadata_offsets_[2] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfTracingMetadata, tracing_data_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfTracingMetadata, tracing_data_md5_prefix_),
  };
  PerfDataProto_PerfTracingMetadata_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfTracingMetadata_descriptor_,
      PerfDataProto_PerfTracingMetadata::default_instance_,
      PerfDataProto_PerfTracingMetadata_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfTracingMetadata, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfTracingMetadata, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfTracingMetadata));
  PerfDataProto_PerfBuildID_descriptor_ = PerfDataProto_descriptor_->nested_type(18);
  static const int PerfDataProto_PerfBuildID_offsets_[5] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfBuildID, misc_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfBuildID, pid_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfBuildID, build_id_hash_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfBuildID, filename_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfBuildID, filename_md5_prefix_),
  };
  PerfDataProto_PerfBuildID_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfBuildID_descriptor_,
      PerfDataProto_PerfBuildID::default_instance_,
      PerfDataProto_PerfBuildID_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfBuildID, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfBuildID, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfBuildID));
  PerfDataProto_PerfCPUTopologyMetadata_descriptor_ = PerfDataProto_descriptor_->nested_type(19);
  static const int PerfDataProto_PerfCPUTopologyMetadata_offsets_[4] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfCPUTopologyMetadata, core_siblings_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfCPUTopologyMetadata, core_siblings_md5_prefix_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfCPUTopologyMetadata, thread_siblings_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfCPUTopologyMetadata, thread_siblings_md5_prefix_),
  };
  PerfDataProto_PerfCPUTopologyMetadata_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfCPUTopologyMetadata_descriptor_,
      PerfDataProto_PerfCPUTopologyMetadata::default_instance_,
      PerfDataProto_PerfCPUTopologyMetadata_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfCPUTopologyMetadata, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfCPUTopologyMetadata, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfCPUTopologyMetadata));
  PerfDataProto_PerfNodeTopologyMetadata_descriptor_ = PerfDataProto_descriptor_->nested_type(20);
  static const int PerfDataProto_PerfNodeTopologyMetadata_offsets_[5] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfNodeTopologyMetadata, id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfNodeTopologyMetadata, total_memory_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfNodeTopologyMetadata, free_memory_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfNodeTopologyMetadata, cpu_list_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfNodeTopologyMetadata, cpu_list_md5_prefix_),
  };
  PerfDataProto_PerfNodeTopologyMetadata_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_PerfNodeTopologyMetadata_descriptor_,
      PerfDataProto_PerfNodeTopologyMetadata::default_instance_,
      PerfDataProto_PerfNodeTopologyMetadata_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfNodeTopologyMetadata, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_PerfNodeTopologyMetadata, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_PerfNodeTopologyMetadata));
  PerfDataProto_StringMetadata_descriptor_ = PerfDataProto_descriptor_->nested_type(21);
  static const int PerfDataProto_StringMetadata_offsets_[8] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, hostname_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, kernel_version_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, perf_version_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, architecture_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, cpu_description_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, cpu_id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, perf_command_line_token_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, perf_command_line_whole_),
  };
  PerfDataProto_StringMetadata_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_StringMetadata_descriptor_,
      PerfDataProto_StringMetadata::default_instance_,
      PerfDataProto_StringMetadata_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_StringMetadata));
  PerfDataProto_StringMetadata_StringAndMd5sumPrefix_descriptor_ = PerfDataProto_StringMetadata_descriptor_->nested_type(0);
  static const int PerfDataProto_StringMetadata_StringAndMd5sumPrefix_offsets_[2] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata_StringAndMd5sumPrefix, value_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata_StringAndMd5sumPrefix, value_md5_prefix_),
  };
  PerfDataProto_StringMetadata_StringAndMd5sumPrefix_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      PerfDataProto_StringMetadata_StringAndMd5sumPrefix_descriptor_,
      PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance_,
      PerfDataProto_StringMetadata_StringAndMd5sumPrefix_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata_StringAndMd5sumPrefix, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PerfDataProto_StringMetadata_StringAndMd5sumPrefix, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(PerfDataProto_StringMetadata_StringAndMd5sumPrefix));
}

namespace {

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

void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_descriptor_, &PerfDataProto::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfEventAttr_descriptor_, &PerfDataProto_PerfEventAttr::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfFileAttr_descriptor_, &PerfDataProto_PerfFileAttr::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfEventType_descriptor_, &PerfDataProto_PerfEventType::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_SampleInfo_descriptor_, &PerfDataProto_SampleInfo::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_CommEvent_descriptor_, &PerfDataProto_CommEvent::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_MMapEvent_descriptor_, &PerfDataProto_MMapEvent::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_BranchStackEntry_descriptor_, &PerfDataProto_BranchStackEntry::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_SampleEvent_descriptor_, &PerfDataProto_SampleEvent::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_ForkEvent_descriptor_, &PerfDataProto_ForkEvent::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_LostEvent_descriptor_, &PerfDataProto_LostEvent::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_ThrottleEvent_descriptor_, &PerfDataProto_ThrottleEvent::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_ReadEvent_descriptor_, &PerfDataProto_ReadEvent::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_EventHeader_descriptor_, &PerfDataProto_EventHeader::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfEvent_descriptor_, &PerfDataProto_PerfEvent::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfEventStats_descriptor_, &PerfDataProto_PerfEventStats::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfUint32Metadata_descriptor_, &PerfDataProto_PerfUint32Metadata::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfUint64Metadata_descriptor_, &PerfDataProto_PerfUint64Metadata::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfTracingMetadata_descriptor_, &PerfDataProto_PerfTracingMetadata::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfBuildID_descriptor_, &PerfDataProto_PerfBuildID::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfCPUTopologyMetadata_descriptor_, &PerfDataProto_PerfCPUTopologyMetadata::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_PerfNodeTopologyMetadata_descriptor_, &PerfDataProto_PerfNodeTopologyMetadata::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_StringMetadata_descriptor_, &PerfDataProto_StringMetadata::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    PerfDataProto_StringMetadata_StringAndMd5sumPrefix_descriptor_, &PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance());
}

}  // namespace

void protobuf_ShutdownFile_perf_5fdata_2eproto() {
  delete PerfDataProto::default_instance_;
  delete PerfDataProto_reflection_;
  delete PerfDataProto_PerfEventAttr::default_instance_;
  delete PerfDataProto_PerfEventAttr_reflection_;
  delete PerfDataProto_PerfFileAttr::default_instance_;
  delete PerfDataProto_PerfFileAttr_reflection_;
  delete PerfDataProto_PerfEventType::default_instance_;
  delete PerfDataProto_PerfEventType_reflection_;
  delete PerfDataProto_SampleInfo::default_instance_;
  delete PerfDataProto_SampleInfo_reflection_;
  delete PerfDataProto_CommEvent::default_instance_;
  delete PerfDataProto_CommEvent_reflection_;
  delete PerfDataProto_MMapEvent::default_instance_;
  delete PerfDataProto_MMapEvent_reflection_;
  delete PerfDataProto_BranchStackEntry::default_instance_;
  delete PerfDataProto_BranchStackEntry_reflection_;
  delete PerfDataProto_SampleEvent::default_instance_;
  delete PerfDataProto_SampleEvent_reflection_;
  delete PerfDataProto_ForkEvent::default_instance_;
  delete PerfDataProto_ForkEvent_reflection_;
  delete PerfDataProto_LostEvent::default_instance_;
  delete PerfDataProto_LostEvent_reflection_;
  delete PerfDataProto_ThrottleEvent::default_instance_;
  delete PerfDataProto_ThrottleEvent_reflection_;
  delete PerfDataProto_ReadEvent::default_instance_;
  delete PerfDataProto_ReadEvent_reflection_;
  delete PerfDataProto_EventHeader::default_instance_;
  delete PerfDataProto_EventHeader_reflection_;
  delete PerfDataProto_PerfEvent::default_instance_;
  delete PerfDataProto_PerfEvent_reflection_;
  delete PerfDataProto_PerfEventStats::default_instance_;
  delete PerfDataProto_PerfEventStats_reflection_;
  delete PerfDataProto_PerfUint32Metadata::default_instance_;
  delete PerfDataProto_PerfUint32Metadata_reflection_;
  delete PerfDataProto_PerfUint64Metadata::default_instance_;
  delete PerfDataProto_PerfUint64Metadata_reflection_;
  delete PerfDataProto_PerfTracingMetadata::default_instance_;
  delete PerfDataProto_PerfTracingMetadata_reflection_;
  delete PerfDataProto_PerfBuildID::default_instance_;
  delete PerfDataProto_PerfBuildID_reflection_;
  delete PerfDataProto_PerfCPUTopologyMetadata::default_instance_;
  delete PerfDataProto_PerfCPUTopologyMetadata_reflection_;
  delete PerfDataProto_PerfNodeTopologyMetadata::default_instance_;
  delete PerfDataProto_PerfNodeTopologyMetadata_reflection_;
  delete PerfDataProto_StringMetadata::default_instance_;
  delete PerfDataProto_StringMetadata_reflection_;
  delete PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance_;
  delete PerfDataProto_StringMetadata_StringAndMd5sumPrefix_reflection_;
}

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

  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
    "\n\017perf_data.proto\022\007quipper\"\260(\n\rPerfDataP"
    "roto\0227\n\nfile_attrs\030\001 \003(\0132#.quipper.PerfD"
    "ataProto.PerfFileAttr\0220\n\006events\030\002 \003(\0132 ."
    "quipper.PerfDataProto.PerfEvent\0229\n\013event"
    "_types\030\n \003(\0132$.quipper.PerfDataProto.Per"
    "fEventType\022\025\n\rtimestamp_sec\030\003 \001(\004\0224\n\005sta"
    "ts\030\004 \001(\0132%.quipper.PerfDataProto.PerfEve"
    "ntStats\022\025\n\rmetadata_mask\030\005 \003(\004\022@\n\014tracin"
    "g_data\030\016 \001(\0132*.quipper.PerfDataProto.Per"
    "fTracingMetadata\0225\n\tbuild_ids\030\007 \003(\0132\".qu"
    "ipper.PerfDataProto.PerfBuildID\022B\n\017uint3"
    "2_metadata\030\010 \003(\0132).quipper.PerfDataProto"
    ".PerfUint32Metadata\022B\n\017uint64_metadata\030\t"
    " \003(\0132).quipper.PerfDataProto.PerfUint64M"
    "etadata\022D\n\014cpu_topology\030\013 \001(\0132..quipper."
    "PerfDataProto.PerfCPUTopologyMetadata\022F\n"
    "\rnuma_topology\030\014 \003(\0132/.quipper.PerfDataP"
    "roto.PerfNodeTopologyMetadata\022>\n\017string_"
    "metadata\030\r \001(\0132%.quipper.PerfDataProto.S"
    "tringMetadata\032\315\006\n\rPerfEventAttr\022\014\n\004type\030"
    "\001 \001(\r\022\014\n\004size\030\002 \001(\r\022\016\n\006config\030\003 \001(\004\022\025\n\rs"
    "ample_period\030\004 \001(\004\022\023\n\013sample_freq\030\005 \001(\004\022"
    "\023\n\013sample_type\030\006 \001(\004\022\023\n\013read_format\030\007 \001("
    "\004\022\020\n\010disabled\030\010 \001(\010\022\017\n\007inherit\030\t \001(\010\022\016\n\006"
    "pinned\030\n \001(\010\022\021\n\texclusive\030\013 \001(\010\022\024\n\014exclu"
    "de_user\030\014 \001(\010\022\026\n\016exclude_kernel\030\r \001(\010\022\022\n"
    "\nexclude_hv\030\016 \001(\010\022\024\n\014exclude_idle\030\017 \001(\010\022"
    "\014\n\004mmap\030\020 \001(\010\022\014\n\004comm\030\021 \001(\010\022\014\n\004freq\030\022 \001("
    "\010\022\024\n\014inherit_stat\030\023 \001(\010\022\026\n\016enable_on_exe"
    "c\030\024 \001(\010\022\014\n\004task\030\025 \001(\010\022\021\n\twatermark\030\026 \001(\010"
    "\022\022\n\nprecise_ip\030\027 \001(\r\022\021\n\tmmap_data\030\030 \001(\010\022"
    "\025\n\rsample_id_all\030\031 \001(\010\022\024\n\014exclude_host\030\032"
    " \001(\010\022\025\n\rexclude_guest\030\033 \001(\010\022 \n\030exclude_c"
    "allchain_kernel\030$ \001(\010\022\036\n\026exclude_callcha"
    "in_user\030% \001(\010\022\r\n\005mmap2\030& \001(\010\022\021\n\tcomm_exe"
    "c\030\' \001(\010\022\025\n\rwakeup_events\030\034 \001(\r\022\030\n\020wakeup"
    "_watermark\030\035 \001(\r\022\017\n\007bp_type\030\036 \001(\r\022\017\n\007bp_"
    "addr\030\037 \001(\004\022\017\n\007config1\030  \001(\004\022\016\n\006bp_len\030! "
    "\001(\004\022\017\n\007config2\030\" \001(\004\022\032\n\022branch_sample_ty"
    "pe\030# \001(\004\022\030\n\020sample_regs_user\030( \001(\004\022\031\n\021sa"
    "mple_stack_user\030) \001(\r\032O\n\014PerfFileAttr\0222\n"
    "\004attr\030\001 \001(\0132$.quipper.PerfDataProto.Perf"
    "EventAttr\022\013\n\003ids\030\002 \003(\004\032B\n\rPerfEventType\022"
    "\n\n\002id\030\001 \001(\004\022\014\n\004name\030\002 \001(\t\022\027\n\017name_md5_pr"
    "efix\030\003 \001(\004\032W\n\nSampleInfo\022\013\n\003pid\030\001 \001(\r\022\013\n"
    "\003tid\030\002 \001(\r\022\026\n\016sample_time_ns\030\003 \001(\004\022\n\n\002id"
    "\030\004 \001(\004\022\013\n\003cpu\030\005 \001(\r\032\235\001\n\tCommEvent\022\013\n\003pid"
    "\030\001 \001(\r\022\013\n\003tid\030\002 \001(\r\022\014\n\004comm\030\003 \001(\t\022\027\n\017com"
    "m_md5_prefix\030\004 \001(\004\022\027\n\013sample_time\030\005 \001(\004B"
    "\002\030\001\0226\n\013sample_info\030\006 \001(\0132!.quipper.PerfD"
    "ataProto.SampleInfo\032\223\002\n\tMMapEvent\022\013\n\003pid"
    "\030\001 \001(\r\022\013\n\003tid\030\002 \001(\r\022\r\n\005start\030\003 \001(\004\022\013\n\003le"
    "n\030\004 \001(\004\022\r\n\005pgoff\030\005 \001(\004\022\013\n\003maj\030\t \001(\r\022\013\n\003m"
    "in\030\n \001(\r\022\013\n\003ino\030\013 \001(\004\022\026\n\016ino_generation\030"
    "\014 \001(\004\022\014\n\004prot\030\r \001(\r\022\r\n\005flags\030\016 \001(\r\022\020\n\010fi"
    "lename\030\006 \001(\t\022\033\n\023filename_md5_prefix\030\007 \001("
    "\004\0226\n\013sample_info\030\010 \001(\0132!.quipper.PerfDat"
    "aProto.SampleInfo\032H\n\020BranchStackEntry\022\017\n"
    "\007from_ip\030\001 \001(\004\022\r\n\005to_ip\030\002 \001(\004\022\024\n\014mispred"
    "icted\030\003 \001(\010\032\371\001\n\013SampleEvent\022\n\n\002ip\030\001 \001(\004\022"
    "\013\n\003pid\030\002 \001(\r\022\013\n\003tid\030\003 \001(\r\022\026\n\016sample_time"
    "_ns\030\004 \001(\004\022\014\n\004addr\030\005 \001(\004\022\n\n\002id\030\006 \001(\004\022\021\n\ts"
    "tream_id\030\007 \001(\004\022\016\n\006period\030\010 \001(\004\022\013\n\003cpu\030\t "
    "\001(\r\022\020\n\010raw_size\030\n \001(\r\022\021\n\tcallchain\030\013 \003(\004"
    "\022=\n\014branch_stack\030\014 \003(\0132\'.quipper.PerfDat"
    "aProto.BranchStackEntry\032\217\001\n\tForkEvent\022\013\n"
    "\003pid\030\001 \001(\r\022\014\n\004ppid\030\002 \001(\r\022\013\n\003tid\030\003 \001(\r\022\014\n"
    "\004ptid\030\004 \001(\r\022\024\n\014fork_time_ns\030\005 \001(\004\0226\n\013sam"
    "ple_info\030\013 \001(\0132!.quipper.PerfDataProto.S"
    "ampleInfo\032]\n\tLostEvent\022\n\n\002id\030\001 \001(\004\022\014\n\004lo"
    "st\030\002 \001(\004\0226\n\013sample_info\030\003 \001(\0132!.quipper."
    "PerfDataProto.SampleInfo\032w\n\rThrottleEven"
    "t\022\017\n\007time_ns\030\001 \001(\004\022\n\n\002id\030\002 \001(\004\022\021\n\tstream"
    "_id\030\003 \001(\004\0226\n\013sample_info\030\004 \001(\0132!.quipper"
    ".PerfDataProto.SampleInfo\032\244\001\n\tReadEvent\022"
    "\013\n\003pid\030\001 \001(\r\022\013\n\003tid\030\002 \001(\r\022\r\n\005value\030\003 \001(\004"
    "\022\024\n\014time_enabled\030\004 \001(\004\022\024\n\014time_running\030\005"
    " \001(\004\022\n\n\002id\030\006 \001(\004\0226\n\013sample_info\030\007 \001(\0132!."
    "quipper.PerfDataProto.SampleInfo\0327\n\013Even"
    "tHeader\022\014\n\004type\030\001 \001(\r\022\014\n\004misc\030\002 \001(\r\022\014\n\004s"
    "ize\030\003 \001(\r\032\305\003\n\tPerfEvent\0222\n\006header\030\001 \001(\0132"
    "\".quipper.PerfDataProto.EventHeader\0224\n\nm"
    "map_event\030\002 \001(\0132 .quipper.PerfDataProto."
    "MMapEvent\0228\n\014sample_event\030\003 \001(\0132\".quippe"
    "r.PerfDataProto.SampleEvent\0224\n\ncomm_even"
    "t\030\004 \001(\0132 .quipper.PerfDataProto.CommEven"
    "t\0224\n\nfork_event\030\005 \001(\0132 .quipper.PerfData"
    "Proto.ForkEvent\0224\n\nlost_event\030\006 \001(\0132 .qu"
    "ipper.PerfDataProto.LostEvent\022<\n\016throttl"
    "e_event\030\007 \001(\0132$.quipper.PerfDataProto.Th"
    "rottleEvent\0224\n\nread_event\030\010 \001(\0132 .quippe"
    "r.PerfDataProto.ReadEvent\032\304\001\n\016PerfEventS"
    "tats\022\027\n\017num_events_read\030\001 \001(\r\022\031\n\021num_sam"
    "ple_events\030\002 \001(\r\022\027\n\017num_mmap_events\030\003 \001("
    "\r\022\027\n\017num_fork_events\030\004 \001(\r\022\027\n\017num_exit_e"
    "vents\030\005 \001(\r\022 \n\030num_sample_events_mapped\030"
    "\006 \001(\r\022\021\n\tdid_remap\030\007 \001(\010\0320\n\022PerfUint32Me"
    "tadata\022\014\n\004type\030\001 \001(\r\022\014\n\004data\030\002 \003(\r\0320\n\022Pe"
    "rfUint64Metadata\022\014\n\004type\030\001 \001(\r\022\014\n\004data\030\002"
    " \003(\004\032L\n\023PerfTracingMetadata\022\024\n\014tracing_d"
    "ata\030\001 \001(\014\022\037\n\027tracing_data_md5_prefix\030\002 \001"
    "(\004\032n\n\013PerfBuildID\022\014\n\004misc\030\001 \001(\r\022\013\n\003pid\030\002"
    " \001(\r\022\025\n\rbuild_id_hash\030\003 \001(\014\022\020\n\010filename\030"
    "\004 \001(\t\022\033\n\023filename_md5_prefix\030\005 \001(\004\032\217\001\n\027P"
    "erfCPUTopologyMetadata\022\025\n\rcore_siblings\030"
    "\001 \003(\t\022 \n\030core_siblings_md5_prefix\030\002 \003(\004\022"
    "\027\n\017thread_siblings\030\003 \003(\t\022\"\n\032thread_sibli"
    "ngs_md5_prefix\030\004 \003(\004\032\200\001\n\030PerfNodeTopolog"
    "yMetadata\022\n\n\002id\030\001 \001(\r\022\024\n\014total_memory\030\002 "
    "\001(\004\022\023\n\013free_memory\030\003 \001(\004\022\020\n\010cpu_list\030\004 \001"
    "(\t\022\033\n\023cpu_list_md5_prefix\030\005 \001(\004\032\373\005\n\016Stri"
    "ngMetadata\022M\n\010hostname\030\001 \001(\0132;.quipper.P"
    "erfDataProto.StringMetadata.StringAndMd5"
    "sumPrefix\022S\n\016kernel_version\030\002 \001(\0132;.quip"
    "per.PerfDataProto.StringMetadata.StringA"
    "ndMd5sumPrefix\022Q\n\014perf_version\030\003 \001(\0132;.q"
    "uipper.PerfDataProto.StringMetadata.Stri"
    "ngAndMd5sumPrefix\022Q\n\014architecture\030\004 \001(\0132"
    ";.quipper.PerfDataProto.StringMetadata.S"
    "tringAndMd5sumPrefix\022T\n\017cpu_description\030"
    "\005 \001(\0132;.quipper.PerfDataProto.StringMeta"
    "data.StringAndMd5sumPrefix\022K\n\006cpu_id\030\006 \001"
    "(\0132;.quipper.PerfDataProto.StringMetadat"
    "a.StringAndMd5sumPrefix\022\\\n\027perf_command_"
    "line_token\030\007 \003(\0132;.quipper.PerfDataProto"
    ".StringMetadata.StringAndMd5sumPrefix\022\\\n"
    "\027perf_command_line_whole\030\010 \001(\0132;.quipper"
    ".PerfDataProto.StringMetadata.StringAndM"
    "d5sumPrefix\032@\n\025StringAndMd5sumPrefix\022\r\n\005"
    "value\030\001 \001(\t\022\030\n\020value_md5_prefix\030\002 \001(\004", 5197);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "perf_data.proto", &protobuf_RegisterTypes);
  PerfDataProto::default_instance_ = new PerfDataProto();
  PerfDataProto_PerfEventAttr::default_instance_ = new PerfDataProto_PerfEventAttr();
  PerfDataProto_PerfFileAttr::default_instance_ = new PerfDataProto_PerfFileAttr();
  PerfDataProto_PerfEventType::default_instance_ = new PerfDataProto_PerfEventType();
  PerfDataProto_SampleInfo::default_instance_ = new PerfDataProto_SampleInfo();
  PerfDataProto_CommEvent::default_instance_ = new PerfDataProto_CommEvent();
  PerfDataProto_MMapEvent::default_instance_ = new PerfDataProto_MMapEvent();
  PerfDataProto_BranchStackEntry::default_instance_ = new PerfDataProto_BranchStackEntry();
  PerfDataProto_SampleEvent::default_instance_ = new PerfDataProto_SampleEvent();
  PerfDataProto_ForkEvent::default_instance_ = new PerfDataProto_ForkEvent();
  PerfDataProto_LostEvent::default_instance_ = new PerfDataProto_LostEvent();
  PerfDataProto_ThrottleEvent::default_instance_ = new PerfDataProto_ThrottleEvent();
  PerfDataProto_ReadEvent::default_instance_ = new PerfDataProto_ReadEvent();
  PerfDataProto_EventHeader::default_instance_ = new PerfDataProto_EventHeader();
  PerfDataProto_PerfEvent::default_instance_ = new PerfDataProto_PerfEvent();
  PerfDataProto_PerfEventStats::default_instance_ = new PerfDataProto_PerfEventStats();
  PerfDataProto_PerfUint32Metadata::default_instance_ = new PerfDataProto_PerfUint32Metadata();
  PerfDataProto_PerfUint64Metadata::default_instance_ = new PerfDataProto_PerfUint64Metadata();
  PerfDataProto_PerfTracingMetadata::default_instance_ = new PerfDataProto_PerfTracingMetadata();
  PerfDataProto_PerfBuildID::default_instance_ = new PerfDataProto_PerfBuildID();
  PerfDataProto_PerfCPUTopologyMetadata::default_instance_ = new PerfDataProto_PerfCPUTopologyMetadata();
  PerfDataProto_PerfNodeTopologyMetadata::default_instance_ = new PerfDataProto_PerfNodeTopologyMetadata();
  PerfDataProto_StringMetadata::default_instance_ = new PerfDataProto_StringMetadata();
  PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance_ = new PerfDataProto_StringMetadata_StringAndMd5sumPrefix();
  PerfDataProto::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfEventAttr::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfFileAttr::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfEventType::default_instance_->InitAsDefaultInstance();
  PerfDataProto_SampleInfo::default_instance_->InitAsDefaultInstance();
  PerfDataProto_CommEvent::default_instance_->InitAsDefaultInstance();
  PerfDataProto_MMapEvent::default_instance_->InitAsDefaultInstance();
  PerfDataProto_BranchStackEntry::default_instance_->InitAsDefaultInstance();
  PerfDataProto_SampleEvent::default_instance_->InitAsDefaultInstance();
  PerfDataProto_ForkEvent::default_instance_->InitAsDefaultInstance();
  PerfDataProto_LostEvent::default_instance_->InitAsDefaultInstance();
  PerfDataProto_ThrottleEvent::default_instance_->InitAsDefaultInstance();
  PerfDataProto_ReadEvent::default_instance_->InitAsDefaultInstance();
  PerfDataProto_EventHeader::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfEvent::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfEventStats::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfUint32Metadata::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfUint64Metadata::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfTracingMetadata::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfBuildID::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfCPUTopologyMetadata::default_instance_->InitAsDefaultInstance();
  PerfDataProto_PerfNodeTopologyMetadata::default_instance_->InitAsDefaultInstance();
  PerfDataProto_StringMetadata::default_instance_->InitAsDefaultInstance();
  PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance_->InitAsDefaultInstance();
  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_perf_5fdata_2eproto);
}

// Force AddDescriptors() to be called at static initialization time.
struct StaticDescriptorInitializer_perf_5fdata_2eproto {
  StaticDescriptorInitializer_perf_5fdata_2eproto() {
    protobuf_AddDesc_perf_5fdata_2eproto();
  }
} static_descriptor_initializer_perf_5fdata_2eproto_;

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

#ifndef _MSC_VER
const int PerfDataProto_PerfEventAttr::kTypeFieldNumber;
const int PerfDataProto_PerfEventAttr::kSizeFieldNumber;
const int PerfDataProto_PerfEventAttr::kConfigFieldNumber;
const int PerfDataProto_PerfEventAttr::kSamplePeriodFieldNumber;
const int PerfDataProto_PerfEventAttr::kSampleFreqFieldNumber;
const int PerfDataProto_PerfEventAttr::kSampleTypeFieldNumber;
const int PerfDataProto_PerfEventAttr::kReadFormatFieldNumber;
const int PerfDataProto_PerfEventAttr::kDisabledFieldNumber;
const int PerfDataProto_PerfEventAttr::kInheritFieldNumber;
const int PerfDataProto_PerfEventAttr::kPinnedFieldNumber;
const int PerfDataProto_PerfEventAttr::kExclusiveFieldNumber;
const int PerfDataProto_PerfEventAttr::kExcludeUserFieldNumber;
const int PerfDataProto_PerfEventAttr::kExcludeKernelFieldNumber;
const int PerfDataProto_PerfEventAttr::kExcludeHvFieldNumber;
const int PerfDataProto_PerfEventAttr::kExcludeIdleFieldNumber;
const int PerfDataProto_PerfEventAttr::kMmapFieldNumber;
const int PerfDataProto_PerfEventAttr::kCommFieldNumber;
const int PerfDataProto_PerfEventAttr::kFreqFieldNumber;
const int PerfDataProto_PerfEventAttr::kInheritStatFieldNumber;
const int PerfDataProto_PerfEventAttr::kEnableOnExecFieldNumber;
const int PerfDataProto_PerfEventAttr::kTaskFieldNumber;
const int PerfDataProto_PerfEventAttr::kWatermarkFieldNumber;
const int PerfDataProto_PerfEventAttr::kPreciseIpFieldNumber;
const int PerfDataProto_PerfEventAttr::kMmapDataFieldNumber;
const int PerfDataProto_PerfEventAttr::kSampleIdAllFieldNumber;
const int PerfDataProto_PerfEventAttr::kExcludeHostFieldNumber;
const int PerfDataProto_PerfEventAttr::kExcludeGuestFieldNumber;
const int PerfDataProto_PerfEventAttr::kExcludeCallchainKernelFieldNumber;
const int PerfDataProto_PerfEventAttr::kExcludeCallchainUserFieldNumber;
const int PerfDataProto_PerfEventAttr::kMmap2FieldNumber;
const int PerfDataProto_PerfEventAttr::kCommExecFieldNumber;
const int PerfDataProto_PerfEventAttr::kWakeupEventsFieldNumber;
const int PerfDataProto_PerfEventAttr::kWakeupWatermarkFieldNumber;
const int PerfDataProto_PerfEventAttr::kBpTypeFieldNumber;
const int PerfDataProto_PerfEventAttr::kBpAddrFieldNumber;
const int PerfDataProto_PerfEventAttr::kConfig1FieldNumber;
const int PerfDataProto_PerfEventAttr::kBpLenFieldNumber;
const int PerfDataProto_PerfEventAttr::kConfig2FieldNumber;
const int PerfDataProto_PerfEventAttr::kBranchSampleTypeFieldNumber;
const int PerfDataProto_PerfEventAttr::kSampleRegsUserFieldNumber;
const int PerfDataProto_PerfEventAttr::kSampleStackUserFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfEventAttr::PerfDataProto_PerfEventAttr()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfEventAttr::InitAsDefaultInstance() {
}

PerfDataProto_PerfEventAttr::PerfDataProto_PerfEventAttr(const PerfDataProto_PerfEventAttr& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfEventAttr::SharedCtor() {
  _cached_size_ = 0;
  type_ = 0u;
  size_ = 0u;
  config_ = GOOGLE_ULONGLONG(0);
  sample_period_ = GOOGLE_ULONGLONG(0);
  sample_freq_ = GOOGLE_ULONGLONG(0);
  sample_type_ = GOOGLE_ULONGLONG(0);
  read_format_ = GOOGLE_ULONGLONG(0);
  disabled_ = false;
  inherit_ = false;
  pinned_ = false;
  exclusive_ = false;
  exclude_user_ = false;
  exclude_kernel_ = false;
  exclude_hv_ = false;
  exclude_idle_ = false;
  mmap_ = false;
  comm_ = false;
  freq_ = false;
  inherit_stat_ = false;
  enable_on_exec_ = false;
  task_ = false;
  watermark_ = false;
  precise_ip_ = 0u;
  mmap_data_ = false;
  sample_id_all_ = false;
  exclude_host_ = false;
  exclude_guest_ = false;
  exclude_callchain_kernel_ = false;
  exclude_callchain_user_ = false;
  mmap2_ = false;
  comm_exec_ = false;
  wakeup_events_ = 0u;
  wakeup_watermark_ = 0u;
  bp_type_ = 0u;
  bp_addr_ = GOOGLE_ULONGLONG(0);
  config1_ = GOOGLE_ULONGLONG(0);
  bp_len_ = GOOGLE_ULONGLONG(0);
  config2_ = GOOGLE_ULONGLONG(0);
  branch_sample_type_ = GOOGLE_ULONGLONG(0);
  sample_regs_user_ = GOOGLE_ULONGLONG(0);
  sample_stack_user_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfEventAttr::~PerfDataProto_PerfEventAttr() {
  SharedDtor();
}

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

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

const PerfDataProto_PerfEventAttr& PerfDataProto_PerfEventAttr::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfEventAttr* PerfDataProto_PerfEventAttr::default_instance_ = NULL;

PerfDataProto_PerfEventAttr* PerfDataProto_PerfEventAttr::New() const {
  return new PerfDataProto_PerfEventAttr;
}

void PerfDataProto_PerfEventAttr::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    type_ = 0u;
    size_ = 0u;
    config_ = GOOGLE_ULONGLONG(0);
    sample_period_ = GOOGLE_ULONGLONG(0);
    sample_freq_ = GOOGLE_ULONGLONG(0);
    sample_type_ = GOOGLE_ULONGLONG(0);
    read_format_ = GOOGLE_ULONGLONG(0);
    disabled_ = false;
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    inherit_ = false;
    pinned_ = false;
    exclusive_ = false;
    exclude_user_ = false;
    exclude_kernel_ = false;
    exclude_hv_ = false;
    exclude_idle_ = false;
    mmap_ = false;
  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    comm_ = false;
    freq_ = false;
    inherit_stat_ = false;
    enable_on_exec_ = false;
    task_ = false;
    watermark_ = false;
    precise_ip_ = 0u;
    mmap_data_ = false;
  }
  if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) {
    sample_id_all_ = false;
    exclude_host_ = false;
    exclude_guest_ = false;
    exclude_callchain_kernel_ = false;
    exclude_callchain_user_ = false;
    mmap2_ = false;
    comm_exec_ = false;
    wakeup_events_ = 0u;
  }
  if (_has_bits_[32 / 32] & (0xffu << (32 % 32))) {
    wakeup_watermark_ = 0u;
    bp_type_ = 0u;
    bp_addr_ = GOOGLE_ULONGLONG(0);
    config1_ = GOOGLE_ULONGLONG(0);
    bp_len_ = GOOGLE_ULONGLONG(0);
    config2_ = GOOGLE_ULONGLONG(0);
    branch_sample_type_ = GOOGLE_ULONGLONG(0);
    sample_regs_user_ = GOOGLE_ULONGLONG(0);
  }
  if (_has_bits_[40 / 32] & (0xffu << (40 % 32))) {
    sample_stack_user_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfEventAttr::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 type = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &type_)));
          set_has_type();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_size;
        break;
      }

      // optional uint32 size = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_size:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &size_)));
          set_has_size();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_config;
        break;
      }

      // optional uint64 config = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_config:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &config_)));
          set_has_config();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_sample_period;
        break;
      }

      // optional uint64 sample_period = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_sample_period:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &sample_period_)));
          set_has_sample_period();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_sample_freq;
        break;
      }

      // optional uint64 sample_freq = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_sample_freq:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &sample_freq_)));
          set_has_sample_freq();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_sample_type;
        break;
      }

      // optional uint64 sample_type = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_sample_type:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &sample_type_)));
          set_has_sample_type();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_read_format;
        break;
      }

      // optional uint64 read_format = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_read_format:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &read_format_)));
          set_has_read_format();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(64)) goto parse_disabled;
        break;
      }

      // optional bool disabled = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_disabled:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &disabled_)));
          set_has_disabled();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(72)) goto parse_inherit;
        break;
      }

      // optional bool inherit = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_inherit:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &inherit_)));
          set_has_inherit();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(80)) goto parse_pinned;
        break;
      }

      // optional bool pinned = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_pinned:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &pinned_)));
          set_has_pinned();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(88)) goto parse_exclusive;
        break;
      }

      // optional bool exclusive = 11;
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exclusive:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &exclusive_)));
          set_has_exclusive();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96)) goto parse_exclude_user;
        break;
      }

      // optional bool exclude_user = 12;
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exclude_user:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &exclude_user_)));
          set_has_exclude_user();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(104)) goto parse_exclude_kernel;
        break;
      }

      // optional bool exclude_kernel = 13;
      case 13: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exclude_kernel:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &exclude_kernel_)));
          set_has_exclude_kernel();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(112)) goto parse_exclude_hv;
        break;
      }

      // optional bool exclude_hv = 14;
      case 14: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exclude_hv:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &exclude_hv_)));
          set_has_exclude_hv();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(120)) goto parse_exclude_idle;
        break;
      }

      // optional bool exclude_idle = 15;
      case 15: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exclude_idle:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &exclude_idle_)));
          set_has_exclude_idle();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(128)) goto parse_mmap;
        break;
      }

      // optional bool mmap = 16;
      case 16: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_mmap:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &mmap_)));
          set_has_mmap();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(136)) goto parse_comm;
        break;
      }

      // optional bool comm = 17;
      case 17: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_comm:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &comm_)));
          set_has_comm();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(144)) goto parse_freq;
        break;
      }

      // optional bool freq = 18;
      case 18: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_freq:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &freq_)));
          set_has_freq();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(152)) goto parse_inherit_stat;
        break;
      }

      // optional bool inherit_stat = 19;
      case 19: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_inherit_stat:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &inherit_stat_)));
          set_has_inherit_stat();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(160)) goto parse_enable_on_exec;
        break;
      }

      // optional bool enable_on_exec = 20;
      case 20: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_on_exec:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_on_exec_)));
          set_has_enable_on_exec();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(168)) goto parse_task;
        break;
      }

      // optional bool task = 21;
      case 21: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_task:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &task_)));
          set_has_task();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(176)) goto parse_watermark;
        break;
      }

      // optional bool watermark = 22;
      case 22: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_watermark:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &watermark_)));
          set_has_watermark();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(184)) goto parse_precise_ip;
        break;
      }

      // optional uint32 precise_ip = 23;
      case 23: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_precise_ip:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &precise_ip_)));
          set_has_precise_ip();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(192)) goto parse_mmap_data;
        break;
      }

      // optional bool mmap_data = 24;
      case 24: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_mmap_data:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &mmap_data_)));
          set_has_mmap_data();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(200)) goto parse_sample_id_all;
        break;
      }

      // optional bool sample_id_all = 25;
      case 25: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_sample_id_all:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &sample_id_all_)));
          set_has_sample_id_all();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(208)) goto parse_exclude_host;
        break;
      }

      // optional bool exclude_host = 26;
      case 26: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exclude_host:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &exclude_host_)));
          set_has_exclude_host();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(216)) goto parse_exclude_guest;
        break;
      }

      // optional bool exclude_guest = 27;
      case 27: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exclude_guest:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &exclude_guest_)));
          set_has_exclude_guest();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(224)) goto parse_wakeup_events;
        break;
      }

      // optional uint32 wakeup_events = 28;
      case 28: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_wakeup_events:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &wakeup_events_)));
          set_has_wakeup_events();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(232)) goto parse_wakeup_watermark;
        break;
      }

      // optional uint32 wakeup_watermark = 29;
      case 29: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_wakeup_watermark:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &wakeup_watermark_)));
          set_has_wakeup_watermark();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(240)) goto parse_bp_type;
        break;
      }

      // optional uint32 bp_type = 30;
      case 30: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_bp_type:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &bp_type_)));
          set_has_bp_type();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(248)) goto parse_bp_addr;
        break;
      }

      // optional uint64 bp_addr = 31;
      case 31: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_bp_addr:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &bp_addr_)));
          set_has_bp_addr();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(256)) goto parse_config1;
        break;
      }

      // optional uint64 config1 = 32;
      case 32: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_config1:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &config1_)));
          set_has_config1();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(264)) goto parse_bp_len;
        break;
      }

      // optional uint64 bp_len = 33;
      case 33: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_bp_len:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &bp_len_)));
          set_has_bp_len();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(272)) goto parse_config2;
        break;
      }

      // optional uint64 config2 = 34;
      case 34: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_config2:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &config2_)));
          set_has_config2();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(280)) goto parse_branch_sample_type;
        break;
      }

      // optional uint64 branch_sample_type = 35;
      case 35: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_branch_sample_type:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &branch_sample_type_)));
          set_has_branch_sample_type();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(288)) goto parse_exclude_callchain_kernel;
        break;
      }

      // optional bool exclude_callchain_kernel = 36;
      case 36: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exclude_callchain_kernel:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &exclude_callchain_kernel_)));
          set_has_exclude_callchain_kernel();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(296)) goto parse_exclude_callchain_user;
        break;
      }

      // optional bool exclude_callchain_user = 37;
      case 37: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exclude_callchain_user:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &exclude_callchain_user_)));
          set_has_exclude_callchain_user();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(304)) goto parse_mmap2;
        break;
      }

      // optional bool mmap2 = 38;
      case 38: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_mmap2:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &mmap2_)));
          set_has_mmap2();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(312)) goto parse_comm_exec;
        break;
      }

      // optional bool comm_exec = 39;
      case 39: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_comm_exec:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &comm_exec_)));
          set_has_comm_exec();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(320)) goto parse_sample_regs_user;
        break;
      }

      // optional uint64 sample_regs_user = 40;
      case 40: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_sample_regs_user:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &sample_regs_user_)));
          set_has_sample_regs_user();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(328)) goto parse_sample_stack_user;
        break;
      }

      // optional uint32 sample_stack_user = 41;
      case 41: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_sample_stack_user:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &sample_stack_user_)));
          set_has_sample_stack_user();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfEventAttr::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 type = 1;
  if (has_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->type(), output);
  }

  // optional uint32 size = 2;
  if (has_size()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->size(), output);
  }

  // optional uint64 config = 3;
  if (has_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->config(), output);
  }

  // optional uint64 sample_period = 4;
  if (has_sample_period()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->sample_period(), output);
  }

  // optional uint64 sample_freq = 5;
  if (has_sample_freq()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(5, this->sample_freq(), output);
  }

  // optional uint64 sample_type = 6;
  if (has_sample_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(6, this->sample_type(), output);
  }

  // optional uint64 read_format = 7;
  if (has_read_format()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(7, this->read_format(), output);
  }

  // optional bool disabled = 8;
  if (has_disabled()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(8, this->disabled(), output);
  }

  // optional bool inherit = 9;
  if (has_inherit()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(9, this->inherit(), output);
  }

  // optional bool pinned = 10;
  if (has_pinned()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->pinned(), output);
  }

  // optional bool exclusive = 11;
  if (has_exclusive()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(11, this->exclusive(), output);
  }

  // optional bool exclude_user = 12;
  if (has_exclude_user()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(12, this->exclude_user(), output);
  }

  // optional bool exclude_kernel = 13;
  if (has_exclude_kernel()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(13, this->exclude_kernel(), output);
  }

  // optional bool exclude_hv = 14;
  if (has_exclude_hv()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(14, this->exclude_hv(), output);
  }

  // optional bool exclude_idle = 15;
  if (has_exclude_idle()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(15, this->exclude_idle(), output);
  }

  // optional bool mmap = 16;
  if (has_mmap()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->mmap(), output);
  }

  // optional bool comm = 17;
  if (has_comm()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(17, this->comm(), output);
  }

  // optional bool freq = 18;
  if (has_freq()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(18, this->freq(), output);
  }

  // optional bool inherit_stat = 19;
  if (has_inherit_stat()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(19, this->inherit_stat(), output);
  }

  // optional bool enable_on_exec = 20;
  if (has_enable_on_exec()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(20, this->enable_on_exec(), output);
  }

  // optional bool task = 21;
  if (has_task()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(21, this->task(), output);
  }

  // optional bool watermark = 22;
  if (has_watermark()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(22, this->watermark(), output);
  }

  // optional uint32 precise_ip = 23;
  if (has_precise_ip()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(23, this->precise_ip(), output);
  }

  // optional bool mmap_data = 24;
  if (has_mmap_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(24, this->mmap_data(), output);
  }

  // optional bool sample_id_all = 25;
  if (has_sample_id_all()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(25, this->sample_id_all(), output);
  }

  // optional bool exclude_host = 26;
  if (has_exclude_host()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(26, this->exclude_host(), output);
  }

  // optional bool exclude_guest = 27;
  if (has_exclude_guest()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(27, this->exclude_guest(), output);
  }

  // optional uint32 wakeup_events = 28;
  if (has_wakeup_events()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(28, this->wakeup_events(), output);
  }

  // optional uint32 wakeup_watermark = 29;
  if (has_wakeup_watermark()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(29, this->wakeup_watermark(), output);
  }

  // optional uint32 bp_type = 30;
  if (has_bp_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(30, this->bp_type(), output);
  }

  // optional uint64 bp_addr = 31;
  if (has_bp_addr()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(31, this->bp_addr(), output);
  }

  // optional uint64 config1 = 32;
  if (has_config1()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(32, this->config1(), output);
  }

  // optional uint64 bp_len = 33;
  if (has_bp_len()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(33, this->bp_len(), output);
  }

  // optional uint64 config2 = 34;
  if (has_config2()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(34, this->config2(), output);
  }

  // optional uint64 branch_sample_type = 35;
  if (has_branch_sample_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(35, this->branch_sample_type(), output);
  }

  // optional bool exclude_callchain_kernel = 36;
  if (has_exclude_callchain_kernel()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(36, this->exclude_callchain_kernel(), output);
  }

  // optional bool exclude_callchain_user = 37;
  if (has_exclude_callchain_user()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(37, this->exclude_callchain_user(), output);
  }

  // optional bool mmap2 = 38;
  if (has_mmap2()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(38, this->mmap2(), output);
  }

  // optional bool comm_exec = 39;
  if (has_comm_exec()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(39, this->comm_exec(), output);
  }

  // optional uint64 sample_regs_user = 40;
  if (has_sample_regs_user()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(40, this->sample_regs_user(), output);
  }

  // optional uint32 sample_stack_user = 41;
  if (has_sample_stack_user()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(41, this->sample_stack_user(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfEventAttr::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 type = 1;
  if (has_type()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->type(), target);
  }

  // optional uint32 size = 2;
  if (has_size()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->size(), target);
  }

  // optional uint64 config = 3;
  if (has_config()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->config(), target);
  }

  // optional uint64 sample_period = 4;
  if (has_sample_period()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->sample_period(), target);
  }

  // optional uint64 sample_freq = 5;
  if (has_sample_freq()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(5, this->sample_freq(), target);
  }

  // optional uint64 sample_type = 6;
  if (has_sample_type()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(6, this->sample_type(), target);
  }

  // optional uint64 read_format = 7;
  if (has_read_format()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(7, this->read_format(), target);
  }

  // optional bool disabled = 8;
  if (has_disabled()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(8, this->disabled(), target);
  }

  // optional bool inherit = 9;
  if (has_inherit()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(9, this->inherit(), target);
  }

  // optional bool pinned = 10;
  if (has_pinned()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(10, this->pinned(), target);
  }

  // optional bool exclusive = 11;
  if (has_exclusive()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(11, this->exclusive(), target);
  }

  // optional bool exclude_user = 12;
  if (has_exclude_user()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(12, this->exclude_user(), target);
  }

  // optional bool exclude_kernel = 13;
  if (has_exclude_kernel()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(13, this->exclude_kernel(), target);
  }

  // optional bool exclude_hv = 14;
  if (has_exclude_hv()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(14, this->exclude_hv(), target);
  }

  // optional bool exclude_idle = 15;
  if (has_exclude_idle()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(15, this->exclude_idle(), target);
  }

  // optional bool mmap = 16;
  if (has_mmap()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(16, this->mmap(), target);
  }

  // optional bool comm = 17;
  if (has_comm()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(17, this->comm(), target);
  }

  // optional bool freq = 18;
  if (has_freq()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(18, this->freq(), target);
  }

  // optional bool inherit_stat = 19;
  if (has_inherit_stat()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(19, this->inherit_stat(), target);
  }

  // optional bool enable_on_exec = 20;
  if (has_enable_on_exec()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(20, this->enable_on_exec(), target);
  }

  // optional bool task = 21;
  if (has_task()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(21, this->task(), target);
  }

  // optional bool watermark = 22;
  if (has_watermark()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(22, this->watermark(), target);
  }

  // optional uint32 precise_ip = 23;
  if (has_precise_ip()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(23, this->precise_ip(), target);
  }

  // optional bool mmap_data = 24;
  if (has_mmap_data()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(24, this->mmap_data(), target);
  }

  // optional bool sample_id_all = 25;
  if (has_sample_id_all()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(25, this->sample_id_all(), target);
  }

  // optional bool exclude_host = 26;
  if (has_exclude_host()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(26, this->exclude_host(), target);
  }

  // optional bool exclude_guest = 27;
  if (has_exclude_guest()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(27, this->exclude_guest(), target);
  }

  // optional uint32 wakeup_events = 28;
  if (has_wakeup_events()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(28, this->wakeup_events(), target);
  }

  // optional uint32 wakeup_watermark = 29;
  if (has_wakeup_watermark()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(29, this->wakeup_watermark(), target);
  }

  // optional uint32 bp_type = 30;
  if (has_bp_type()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(30, this->bp_type(), target);
  }

  // optional uint64 bp_addr = 31;
  if (has_bp_addr()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(31, this->bp_addr(), target);
  }

  // optional uint64 config1 = 32;
  if (has_config1()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(32, this->config1(), target);
  }

  // optional uint64 bp_len = 33;
  if (has_bp_len()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(33, this->bp_len(), target);
  }

  // optional uint64 config2 = 34;
  if (has_config2()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(34, this->config2(), target);
  }

  // optional uint64 branch_sample_type = 35;
  if (has_branch_sample_type()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(35, this->branch_sample_type(), target);
  }

  // optional bool exclude_callchain_kernel = 36;
  if (has_exclude_callchain_kernel()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(36, this->exclude_callchain_kernel(), target);
  }

  // optional bool exclude_callchain_user = 37;
  if (has_exclude_callchain_user()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(37, this->exclude_callchain_user(), target);
  }

  // optional bool mmap2 = 38;
  if (has_mmap2()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(38, this->mmap2(), target);
  }

  // optional bool comm_exec = 39;
  if (has_comm_exec()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(39, this->comm_exec(), target);
  }

  // optional uint64 sample_regs_user = 40;
  if (has_sample_regs_user()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(40, this->sample_regs_user(), target);
  }

  // optional uint32 sample_stack_user = 41;
  if (has_sample_stack_user()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(41, this->sample_stack_user(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfEventAttr::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 type = 1;
    if (has_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->type());
    }

    // optional uint32 size = 2;
    if (has_size()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->size());
    }

    // optional uint64 config = 3;
    if (has_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->config());
    }

    // optional uint64 sample_period = 4;
    if (has_sample_period()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->sample_period());
    }

    // optional uint64 sample_freq = 5;
    if (has_sample_freq()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->sample_freq());
    }

    // optional uint64 sample_type = 6;
    if (has_sample_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->sample_type());
    }

    // optional uint64 read_format = 7;
    if (has_read_format()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->read_format());
    }

    // optional bool disabled = 8;
    if (has_disabled()) {
      total_size += 1 + 1;
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional bool inherit = 9;
    if (has_inherit()) {
      total_size += 1 + 1;
    }

    // optional bool pinned = 10;
    if (has_pinned()) {
      total_size += 1 + 1;
    }

    // optional bool exclusive = 11;
    if (has_exclusive()) {
      total_size += 1 + 1;
    }

    // optional bool exclude_user = 12;
    if (has_exclude_user()) {
      total_size += 1 + 1;
    }

    // optional bool exclude_kernel = 13;
    if (has_exclude_kernel()) {
      total_size += 1 + 1;
    }

    // optional bool exclude_hv = 14;
    if (has_exclude_hv()) {
      total_size += 1 + 1;
    }

    // optional bool exclude_idle = 15;
    if (has_exclude_idle()) {
      total_size += 1 + 1;
    }

    // optional bool mmap = 16;
    if (has_mmap()) {
      total_size += 2 + 1;
    }

  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    // optional bool comm = 17;
    if (has_comm()) {
      total_size += 2 + 1;
    }

    // optional bool freq = 18;
    if (has_freq()) {
      total_size += 2 + 1;
    }

    // optional bool inherit_stat = 19;
    if (has_inherit_stat()) {
      total_size += 2 + 1;
    }

    // optional bool enable_on_exec = 20;
    if (has_enable_on_exec()) {
      total_size += 2 + 1;
    }

    // optional bool task = 21;
    if (has_task()) {
      total_size += 2 + 1;
    }

    // optional bool watermark = 22;
    if (has_watermark()) {
      total_size += 2 + 1;
    }

    // optional uint32 precise_ip = 23;
    if (has_precise_ip()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->precise_ip());
    }

    // optional bool mmap_data = 24;
    if (has_mmap_data()) {
      total_size += 2 + 1;
    }

  }
  if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) {
    // optional bool sample_id_all = 25;
    if (has_sample_id_all()) {
      total_size += 2 + 1;
    }

    // optional bool exclude_host = 26;
    if (has_exclude_host()) {
      total_size += 2 + 1;
    }

    // optional bool exclude_guest = 27;
    if (has_exclude_guest()) {
      total_size += 2 + 1;
    }

    // optional bool exclude_callchain_kernel = 36;
    if (has_exclude_callchain_kernel()) {
      total_size += 2 + 1;
    }

    // optional bool exclude_callchain_user = 37;
    if (has_exclude_callchain_user()) {
      total_size += 2 + 1;
    }

    // optional bool mmap2 = 38;
    if (has_mmap2()) {
      total_size += 2 + 1;
    }

    // optional bool comm_exec = 39;
    if (has_comm_exec()) {
      total_size += 2 + 1;
    }

    // optional uint32 wakeup_events = 28;
    if (has_wakeup_events()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->wakeup_events());
    }

  }
  if (_has_bits_[32 / 32] & (0xffu << (32 % 32))) {
    // optional uint32 wakeup_watermark = 29;
    if (has_wakeup_watermark()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->wakeup_watermark());
    }

    // optional uint32 bp_type = 30;
    if (has_bp_type()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->bp_type());
    }

    // optional uint64 bp_addr = 31;
    if (has_bp_addr()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->bp_addr());
    }

    // optional uint64 config1 = 32;
    if (has_config1()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->config1());
    }

    // optional uint64 bp_len = 33;
    if (has_bp_len()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->bp_len());
    }

    // optional uint64 config2 = 34;
    if (has_config2()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->config2());
    }

    // optional uint64 branch_sample_type = 35;
    if (has_branch_sample_type()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->branch_sample_type());
    }

    // optional uint64 sample_regs_user = 40;
    if (has_sample_regs_user()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->sample_regs_user());
    }

  }
  if (_has_bits_[40 / 32] & (0xffu << (40 % 32))) {
    // optional uint32 sample_stack_user = 41;
    if (has_sample_stack_user()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->sample_stack_user());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfEventAttr::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfEventAttr* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfEventAttr*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfEventAttr::MergeFrom(const PerfDataProto_PerfEventAttr& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_type()) {
      set_type(from.type());
    }
    if (from.has_size()) {
      set_size(from.size());
    }
    if (from.has_config()) {
      set_config(from.config());
    }
    if (from.has_sample_period()) {
      set_sample_period(from.sample_period());
    }
    if (from.has_sample_freq()) {
      set_sample_freq(from.sample_freq());
    }
    if (from.has_sample_type()) {
      set_sample_type(from.sample_type());
    }
    if (from.has_read_format()) {
      set_read_format(from.read_format());
    }
    if (from.has_disabled()) {
      set_disabled(from.disabled());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_inherit()) {
      set_inherit(from.inherit());
    }
    if (from.has_pinned()) {
      set_pinned(from.pinned());
    }
    if (from.has_exclusive()) {
      set_exclusive(from.exclusive());
    }
    if (from.has_exclude_user()) {
      set_exclude_user(from.exclude_user());
    }
    if (from.has_exclude_kernel()) {
      set_exclude_kernel(from.exclude_kernel());
    }
    if (from.has_exclude_hv()) {
      set_exclude_hv(from.exclude_hv());
    }
    if (from.has_exclude_idle()) {
      set_exclude_idle(from.exclude_idle());
    }
    if (from.has_mmap()) {
      set_mmap(from.mmap());
    }
  }
  if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (from.has_comm()) {
      set_comm(from.comm());
    }
    if (from.has_freq()) {
      set_freq(from.freq());
    }
    if (from.has_inherit_stat()) {
      set_inherit_stat(from.inherit_stat());
    }
    if (from.has_enable_on_exec()) {
      set_enable_on_exec(from.enable_on_exec());
    }
    if (from.has_task()) {
      set_task(from.task());
    }
    if (from.has_watermark()) {
      set_watermark(from.watermark());
    }
    if (from.has_precise_ip()) {
      set_precise_ip(from.precise_ip());
    }
    if (from.has_mmap_data()) {
      set_mmap_data(from.mmap_data());
    }
  }
  if (from._has_bits_[24 / 32] & (0xffu << (24 % 32))) {
    if (from.has_sample_id_all()) {
      set_sample_id_all(from.sample_id_all());
    }
    if (from.has_exclude_host()) {
      set_exclude_host(from.exclude_host());
    }
    if (from.has_exclude_guest()) {
      set_exclude_guest(from.exclude_guest());
    }
    if (from.has_exclude_callchain_kernel()) {
      set_exclude_callchain_kernel(from.exclude_callchain_kernel());
    }
    if (from.has_exclude_callchain_user()) {
      set_exclude_callchain_user(from.exclude_callchain_user());
    }
    if (from.has_mmap2()) {
      set_mmap2(from.mmap2());
    }
    if (from.has_comm_exec()) {
      set_comm_exec(from.comm_exec());
    }
    if (from.has_wakeup_events()) {
      set_wakeup_events(from.wakeup_events());
    }
  }
  if (from._has_bits_[32 / 32] & (0xffu << (32 % 32))) {
    if (from.has_wakeup_watermark()) {
      set_wakeup_watermark(from.wakeup_watermark());
    }
    if (from.has_bp_type()) {
      set_bp_type(from.bp_type());
    }
    if (from.has_bp_addr()) {
      set_bp_addr(from.bp_addr());
    }
    if (from.has_config1()) {
      set_config1(from.config1());
    }
    if (from.has_bp_len()) {
      set_bp_len(from.bp_len());
    }
    if (from.has_config2()) {
      set_config2(from.config2());
    }
    if (from.has_branch_sample_type()) {
      set_branch_sample_type(from.branch_sample_type());
    }
    if (from.has_sample_regs_user()) {
      set_sample_regs_user(from.sample_regs_user());
    }
  }
  if (from._has_bits_[40 / 32] & (0xffu << (40 % 32))) {
    if (from.has_sample_stack_user()) {
      set_sample_stack_user(from.sample_stack_user());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfEventAttr::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfEventAttr::CopyFrom(const PerfDataProto_PerfEventAttr& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfEventAttr::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfEventAttr::Swap(PerfDataProto_PerfEventAttr* other) {
  if (other != this) {
    std::swap(type_, other->type_);
    std::swap(size_, other->size_);
    std::swap(config_, other->config_);
    std::swap(sample_period_, other->sample_period_);
    std::swap(sample_freq_, other->sample_freq_);
    std::swap(sample_type_, other->sample_type_);
    std::swap(read_format_, other->read_format_);
    std::swap(disabled_, other->disabled_);
    std::swap(inherit_, other->inherit_);
    std::swap(pinned_, other->pinned_);
    std::swap(exclusive_, other->exclusive_);
    std::swap(exclude_user_, other->exclude_user_);
    std::swap(exclude_kernel_, other->exclude_kernel_);
    std::swap(exclude_hv_, other->exclude_hv_);
    std::swap(exclude_idle_, other->exclude_idle_);
    std::swap(mmap_, other->mmap_);
    std::swap(comm_, other->comm_);
    std::swap(freq_, other->freq_);
    std::swap(inherit_stat_, other->inherit_stat_);
    std::swap(enable_on_exec_, other->enable_on_exec_);
    std::swap(task_, other->task_);
    std::swap(watermark_, other->watermark_);
    std::swap(precise_ip_, other->precise_ip_);
    std::swap(mmap_data_, other->mmap_data_);
    std::swap(sample_id_all_, other->sample_id_all_);
    std::swap(exclude_host_, other->exclude_host_);
    std::swap(exclude_guest_, other->exclude_guest_);
    std::swap(exclude_callchain_kernel_, other->exclude_callchain_kernel_);
    std::swap(exclude_callchain_user_, other->exclude_callchain_user_);
    std::swap(mmap2_, other->mmap2_);
    std::swap(comm_exec_, other->comm_exec_);
    std::swap(wakeup_events_, other->wakeup_events_);
    std::swap(wakeup_watermark_, other->wakeup_watermark_);
    std::swap(bp_type_, other->bp_type_);
    std::swap(bp_addr_, other->bp_addr_);
    std::swap(config1_, other->config1_);
    std::swap(bp_len_, other->bp_len_);
    std::swap(config2_, other->config2_);
    std::swap(branch_sample_type_, other->branch_sample_type_);
    std::swap(sample_regs_user_, other->sample_regs_user_);
    std::swap(sample_stack_user_, other->sample_stack_user_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_has_bits_[1], other->_has_bits_[1]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfEventAttr::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfEventAttr_descriptor_;
  metadata.reflection = PerfDataProto_PerfEventAttr_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfFileAttr::kAttrFieldNumber;
const int PerfDataProto_PerfFileAttr::kIdsFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfFileAttr::PerfDataProto_PerfFileAttr()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfFileAttr::InitAsDefaultInstance() {
  attr_ = const_cast< ::quipper::PerfDataProto_PerfEventAttr*>(&::quipper::PerfDataProto_PerfEventAttr::default_instance());
}

PerfDataProto_PerfFileAttr::PerfDataProto_PerfFileAttr(const PerfDataProto_PerfFileAttr& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfFileAttr::SharedCtor() {
  _cached_size_ = 0;
  attr_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfFileAttr::~PerfDataProto_PerfFileAttr() {
  SharedDtor();
}

void PerfDataProto_PerfFileAttr::SharedDtor() {
  if (this != default_instance_) {
    delete attr_;
  }
}

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

const PerfDataProto_PerfFileAttr& PerfDataProto_PerfFileAttr::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfFileAttr* PerfDataProto_PerfFileAttr::default_instance_ = NULL;

PerfDataProto_PerfFileAttr* PerfDataProto_PerfFileAttr::New() const {
  return new PerfDataProto_PerfFileAttr;
}

void PerfDataProto_PerfFileAttr::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_attr()) {
      if (attr_ != NULL) attr_->::quipper::PerfDataProto_PerfEventAttr::Clear();
    }
  }
  ids_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfFileAttr::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .quipper.PerfDataProto.PerfEventAttr attr = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_attr()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_ids;
        break;
      }

      // repeated uint64 ids = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_ids:
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 1, 16, input, this->mutable_ids())));
        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
                   == ::google::protobuf::internal::WireFormatLite::
                      WIRETYPE_LENGTH_DELIMITED) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, this->mutable_ids())));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_ids;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfFileAttr::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .quipper.PerfDataProto.PerfEventAttr attr = 1;
  if (has_attr()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->attr(), output);
  }

  // repeated uint64 ids = 2;
  for (int i = 0; i < this->ids_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
      2, this->ids(i), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfFileAttr::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional .quipper.PerfDataProto.PerfEventAttr attr = 1;
  if (has_attr()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        1, this->attr(), target);
  }

  // repeated uint64 ids = 2;
  for (int i = 0; i < this->ids_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteUInt64ToArray(2, this->ids(i), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfFileAttr::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .quipper.PerfDataProto.PerfEventAttr attr = 1;
    if (has_attr()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->attr());
    }

  }
  // repeated uint64 ids = 2;
  {
    int data_size = 0;
    for (int i = 0; i < this->ids_size(); i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::
        UInt64Size(this->ids(i));
    }
    total_size += 1 * this->ids_size() + data_size;
  }

  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfFileAttr::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfFileAttr* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfFileAttr*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfFileAttr::MergeFrom(const PerfDataProto_PerfFileAttr& from) {
  GOOGLE_CHECK_NE(&from, this);
  ids_.MergeFrom(from.ids_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_attr()) {
      mutable_attr()->::quipper::PerfDataProto_PerfEventAttr::MergeFrom(from.attr());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfFileAttr::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfFileAttr::CopyFrom(const PerfDataProto_PerfFileAttr& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfFileAttr::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfFileAttr::Swap(PerfDataProto_PerfFileAttr* other) {
  if (other != this) {
    std::swap(attr_, other->attr_);
    ids_.Swap(&other->ids_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfFileAttr::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfFileAttr_descriptor_;
  metadata.reflection = PerfDataProto_PerfFileAttr_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfEventType::kIdFieldNumber;
const int PerfDataProto_PerfEventType::kNameFieldNumber;
const int PerfDataProto_PerfEventType::kNameMd5PrefixFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfEventType::PerfDataProto_PerfEventType()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfEventType::InitAsDefaultInstance() {
}

PerfDataProto_PerfEventType::PerfDataProto_PerfEventType(const PerfDataProto_PerfEventType& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfEventType::SharedCtor() {
  _cached_size_ = 0;
  id_ = GOOGLE_ULONGLONG(0);
  name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  name_md5_prefix_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfEventType::~PerfDataProto_PerfEventType() {
  SharedDtor();
}

void PerfDataProto_PerfEventType::SharedDtor() {
  if (name_ != &::google::protobuf::internal::kEmptyString) {
    delete name_;
  }
  if (this != default_instance_) {
  }
}

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

const PerfDataProto_PerfEventType& PerfDataProto_PerfEventType::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfEventType* PerfDataProto_PerfEventType::default_instance_ = NULL;

PerfDataProto_PerfEventType* PerfDataProto_PerfEventType::New() const {
  return new PerfDataProto_PerfEventType;
}

void PerfDataProto_PerfEventType::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    id_ = GOOGLE_ULONGLONG(0);
    if (has_name()) {
      if (name_ != &::google::protobuf::internal::kEmptyString) {
        name_->clear();
      }
    }
    name_md5_prefix_ = GOOGLE_ULONGLONG(0);
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfEventType::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint64 id = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &id_)));
          set_has_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_name;
        break;
      }

      // optional string name = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_name:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->name().data(), this->name().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_name_md5_prefix;
        break;
      }

      // optional uint64 name_md5_prefix = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_name_md5_prefix:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &name_md5_prefix_)));
          set_has_name_md5_prefix();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfEventType::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint64 id = 1;
  if (has_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->id(), output);
  }

  // optional string name = 2;
  if (has_name()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->name().data(), this->name().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->name(), output);
  }

  // optional uint64 name_md5_prefix = 3;
  if (has_name_md5_prefix()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->name_md5_prefix(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfEventType::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint64 id = 1;
  if (has_id()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->id(), target);
  }

  // optional string name = 2;
  if (has_name()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->name().data(), this->name().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->name(), target);
  }

  // optional uint64 name_md5_prefix = 3;
  if (has_name_md5_prefix()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->name_md5_prefix(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfEventType::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint64 id = 1;
    if (has_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->id());
    }

    // optional string name = 2;
    if (has_name()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->name());
    }

    // optional uint64 name_md5_prefix = 3;
    if (has_name_md5_prefix()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->name_md5_prefix());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfEventType::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfEventType* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfEventType*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfEventType::MergeFrom(const PerfDataProto_PerfEventType& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_id()) {
      set_id(from.id());
    }
    if (from.has_name()) {
      set_name(from.name());
    }
    if (from.has_name_md5_prefix()) {
      set_name_md5_prefix(from.name_md5_prefix());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfEventType::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfEventType::CopyFrom(const PerfDataProto_PerfEventType& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfEventType::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfEventType::Swap(PerfDataProto_PerfEventType* other) {
  if (other != this) {
    std::swap(id_, other->id_);
    std::swap(name_, other->name_);
    std::swap(name_md5_prefix_, other->name_md5_prefix_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfEventType::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfEventType_descriptor_;
  metadata.reflection = PerfDataProto_PerfEventType_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_SampleInfo::kPidFieldNumber;
const int PerfDataProto_SampleInfo::kTidFieldNumber;
const int PerfDataProto_SampleInfo::kSampleTimeNsFieldNumber;
const int PerfDataProto_SampleInfo::kIdFieldNumber;
const int PerfDataProto_SampleInfo::kCpuFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_SampleInfo::PerfDataProto_SampleInfo()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_SampleInfo::InitAsDefaultInstance() {
}

PerfDataProto_SampleInfo::PerfDataProto_SampleInfo(const PerfDataProto_SampleInfo& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_SampleInfo::SharedCtor() {
  _cached_size_ = 0;
  pid_ = 0u;
  tid_ = 0u;
  sample_time_ns_ = GOOGLE_ULONGLONG(0);
  id_ = GOOGLE_ULONGLONG(0);
  cpu_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_SampleInfo::~PerfDataProto_SampleInfo() {
  SharedDtor();
}

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

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

const PerfDataProto_SampleInfo& PerfDataProto_SampleInfo::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_SampleInfo* PerfDataProto_SampleInfo::default_instance_ = NULL;

PerfDataProto_SampleInfo* PerfDataProto_SampleInfo::New() const {
  return new PerfDataProto_SampleInfo;
}

void PerfDataProto_SampleInfo::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    pid_ = 0u;
    tid_ = 0u;
    sample_time_ns_ = GOOGLE_ULONGLONG(0);
    id_ = GOOGLE_ULONGLONG(0);
    cpu_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_SampleInfo::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 pid = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &pid_)));
          set_has_pid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_tid;
        break;
      }

      // optional uint32 tid = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tid_)));
          set_has_tid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_sample_time_ns;
        break;
      }

      // optional uint64 sample_time_ns = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_sample_time_ns:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &sample_time_ns_)));
          set_has_sample_time_ns();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_id;
        break;
      }

      // optional uint64 id = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_id:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &id_)));
          set_has_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_cpu;
        break;
      }

      // optional uint32 cpu = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_cpu:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &cpu_)));
          set_has_cpu();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_SampleInfo::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->pid(), output);
  }

  // optional uint32 tid = 2;
  if (has_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->tid(), output);
  }

  // optional uint64 sample_time_ns = 3;
  if (has_sample_time_ns()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->sample_time_ns(), output);
  }

  // optional uint64 id = 4;
  if (has_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->id(), output);
  }

  // optional uint32 cpu = 5;
  if (has_cpu()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->cpu(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_SampleInfo::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->pid(), target);
  }

  // optional uint32 tid = 2;
  if (has_tid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->tid(), target);
  }

  // optional uint64 sample_time_ns = 3;
  if (has_sample_time_ns()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->sample_time_ns(), target);
  }

  // optional uint64 id = 4;
  if (has_id()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->id(), target);
  }

  // optional uint32 cpu = 5;
  if (has_cpu()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(5, this->cpu(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_SampleInfo::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 pid = 1;
    if (has_pid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->pid());
    }

    // optional uint32 tid = 2;
    if (has_tid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tid());
    }

    // optional uint64 sample_time_ns = 3;
    if (has_sample_time_ns()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->sample_time_ns());
    }

    // optional uint64 id = 4;
    if (has_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->id());
    }

    // optional uint32 cpu = 5;
    if (has_cpu()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->cpu());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_SampleInfo::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_SampleInfo* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_SampleInfo*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_SampleInfo::MergeFrom(const PerfDataProto_SampleInfo& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_pid()) {
      set_pid(from.pid());
    }
    if (from.has_tid()) {
      set_tid(from.tid());
    }
    if (from.has_sample_time_ns()) {
      set_sample_time_ns(from.sample_time_ns());
    }
    if (from.has_id()) {
      set_id(from.id());
    }
    if (from.has_cpu()) {
      set_cpu(from.cpu());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_SampleInfo::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_SampleInfo::CopyFrom(const PerfDataProto_SampleInfo& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_SampleInfo::IsInitialized() const {

  return true;
}

void PerfDataProto_SampleInfo::Swap(PerfDataProto_SampleInfo* other) {
  if (other != this) {
    std::swap(pid_, other->pid_);
    std::swap(tid_, other->tid_);
    std::swap(sample_time_ns_, other->sample_time_ns_);
    std::swap(id_, other->id_);
    std::swap(cpu_, other->cpu_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_SampleInfo::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_SampleInfo_descriptor_;
  metadata.reflection = PerfDataProto_SampleInfo_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_CommEvent::kPidFieldNumber;
const int PerfDataProto_CommEvent::kTidFieldNumber;
const int PerfDataProto_CommEvent::kCommFieldNumber;
const int PerfDataProto_CommEvent::kCommMd5PrefixFieldNumber;
const int PerfDataProto_CommEvent::kSampleTimeFieldNumber;
const int PerfDataProto_CommEvent::kSampleInfoFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_CommEvent::PerfDataProto_CommEvent()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_CommEvent::InitAsDefaultInstance() {
  sample_info_ = const_cast< ::quipper::PerfDataProto_SampleInfo*>(&::quipper::PerfDataProto_SampleInfo::default_instance());
}

PerfDataProto_CommEvent::PerfDataProto_CommEvent(const PerfDataProto_CommEvent& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_CommEvent::SharedCtor() {
  _cached_size_ = 0;
  pid_ = 0u;
  tid_ = 0u;
  comm_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  comm_md5_prefix_ = GOOGLE_ULONGLONG(0);
  sample_time_ = GOOGLE_ULONGLONG(0);
  sample_info_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_CommEvent::~PerfDataProto_CommEvent() {
  SharedDtor();
}

void PerfDataProto_CommEvent::SharedDtor() {
  if (comm_ != &::google::protobuf::internal::kEmptyString) {
    delete comm_;
  }
  if (this != default_instance_) {
    delete sample_info_;
  }
}

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

const PerfDataProto_CommEvent& PerfDataProto_CommEvent::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_CommEvent* PerfDataProto_CommEvent::default_instance_ = NULL;

PerfDataProto_CommEvent* PerfDataProto_CommEvent::New() const {
  return new PerfDataProto_CommEvent;
}

void PerfDataProto_CommEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    pid_ = 0u;
    tid_ = 0u;
    if (has_comm()) {
      if (comm_ != &::google::protobuf::internal::kEmptyString) {
        comm_->clear();
      }
    }
    comm_md5_prefix_ = GOOGLE_ULONGLONG(0);
    sample_time_ = GOOGLE_ULONGLONG(0);
    if (has_sample_info()) {
      if (sample_info_ != NULL) sample_info_->::quipper::PerfDataProto_SampleInfo::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_CommEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 pid = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &pid_)));
          set_has_pid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_tid;
        break;
      }

      // optional uint32 tid = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tid_)));
          set_has_tid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_comm;
        break;
      }

      // optional string comm = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_comm:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_comm()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->comm().data(), this->comm().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_comm_md5_prefix;
        break;
      }

      // optional uint64 comm_md5_prefix = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_comm_md5_prefix:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &comm_md5_prefix_)));
          set_has_comm_md5_prefix();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_sample_time;
        break;
      }

      // optional uint64 sample_time = 5 [deprecated = true];
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_sample_time:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &sample_time_)));
          set_has_sample_time();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_sample_info;
        break;
      }

      // optional .quipper.PerfDataProto.SampleInfo sample_info = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sample_info:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_sample_info()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_CommEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->pid(), output);
  }

  // optional uint32 tid = 2;
  if (has_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->tid(), output);
  }

  // optional string comm = 3;
  if (has_comm()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->comm().data(), this->comm().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      3, this->comm(), output);
  }

  // optional uint64 comm_md5_prefix = 4;
  if (has_comm_md5_prefix()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->comm_md5_prefix(), output);
  }

  // optional uint64 sample_time = 5 [deprecated = true];
  if (has_sample_time()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(5, this->sample_time(), output);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 6;
  if (has_sample_info()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      6, this->sample_info(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_CommEvent::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->pid(), target);
  }

  // optional uint32 tid = 2;
  if (has_tid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->tid(), target);
  }

  // optional string comm = 3;
  if (has_comm()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->comm().data(), this->comm().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        3, this->comm(), target);
  }

  // optional uint64 comm_md5_prefix = 4;
  if (has_comm_md5_prefix()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->comm_md5_prefix(), target);
  }

  // optional uint64 sample_time = 5 [deprecated = true];
  if (has_sample_time()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(5, this->sample_time(), target);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 6;
  if (has_sample_info()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        6, this->sample_info(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_CommEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 pid = 1;
    if (has_pid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->pid());
    }

    // optional uint32 tid = 2;
    if (has_tid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tid());
    }

    // optional string comm = 3;
    if (has_comm()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->comm());
    }

    // optional uint64 comm_md5_prefix = 4;
    if (has_comm_md5_prefix()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->comm_md5_prefix());
    }

    // optional uint64 sample_time = 5 [deprecated = true];
    if (has_sample_time()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->sample_time());
    }

    // optional .quipper.PerfDataProto.SampleInfo sample_info = 6;
    if (has_sample_info()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->sample_info());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_CommEvent::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_CommEvent* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_CommEvent*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_CommEvent::MergeFrom(const PerfDataProto_CommEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_pid()) {
      set_pid(from.pid());
    }
    if (from.has_tid()) {
      set_tid(from.tid());
    }
    if (from.has_comm()) {
      set_comm(from.comm());
    }
    if (from.has_comm_md5_prefix()) {
      set_comm_md5_prefix(from.comm_md5_prefix());
    }
    if (from.has_sample_time()) {
      set_sample_time(from.sample_time());
    }
    if (from.has_sample_info()) {
      mutable_sample_info()->::quipper::PerfDataProto_SampleInfo::MergeFrom(from.sample_info());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_CommEvent::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_CommEvent::CopyFrom(const PerfDataProto_CommEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_CommEvent::IsInitialized() const {

  return true;
}

void PerfDataProto_CommEvent::Swap(PerfDataProto_CommEvent* other) {
  if (other != this) {
    std::swap(pid_, other->pid_);
    std::swap(tid_, other->tid_);
    std::swap(comm_, other->comm_);
    std::swap(comm_md5_prefix_, other->comm_md5_prefix_);
    std::swap(sample_time_, other->sample_time_);
    std::swap(sample_info_, other->sample_info_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_CommEvent::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_CommEvent_descriptor_;
  metadata.reflection = PerfDataProto_CommEvent_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_MMapEvent::kPidFieldNumber;
const int PerfDataProto_MMapEvent::kTidFieldNumber;
const int PerfDataProto_MMapEvent::kStartFieldNumber;
const int PerfDataProto_MMapEvent::kLenFieldNumber;
const int PerfDataProto_MMapEvent::kPgoffFieldNumber;
const int PerfDataProto_MMapEvent::kMajFieldNumber;
const int PerfDataProto_MMapEvent::kMinFieldNumber;
const int PerfDataProto_MMapEvent::kInoFieldNumber;
const int PerfDataProto_MMapEvent::kInoGenerationFieldNumber;
const int PerfDataProto_MMapEvent::kProtFieldNumber;
const int PerfDataProto_MMapEvent::kFlagsFieldNumber;
const int PerfDataProto_MMapEvent::kFilenameFieldNumber;
const int PerfDataProto_MMapEvent::kFilenameMd5PrefixFieldNumber;
const int PerfDataProto_MMapEvent::kSampleInfoFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_MMapEvent::PerfDataProto_MMapEvent()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_MMapEvent::InitAsDefaultInstance() {
  sample_info_ = const_cast< ::quipper::PerfDataProto_SampleInfo*>(&::quipper::PerfDataProto_SampleInfo::default_instance());
}

PerfDataProto_MMapEvent::PerfDataProto_MMapEvent(const PerfDataProto_MMapEvent& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_MMapEvent::SharedCtor() {
  _cached_size_ = 0;
  pid_ = 0u;
  tid_ = 0u;
  start_ = GOOGLE_ULONGLONG(0);
  len_ = GOOGLE_ULONGLONG(0);
  pgoff_ = GOOGLE_ULONGLONG(0);
  maj_ = 0u;
  min_ = 0u;
  ino_ = GOOGLE_ULONGLONG(0);
  ino_generation_ = GOOGLE_ULONGLONG(0);
  prot_ = 0u;
  flags_ = 0u;
  filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  filename_md5_prefix_ = GOOGLE_ULONGLONG(0);
  sample_info_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_MMapEvent::~PerfDataProto_MMapEvent() {
  SharedDtor();
}

void PerfDataProto_MMapEvent::SharedDtor() {
  if (filename_ != &::google::protobuf::internal::kEmptyString) {
    delete filename_;
  }
  if (this != default_instance_) {
    delete sample_info_;
  }
}

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

const PerfDataProto_MMapEvent& PerfDataProto_MMapEvent::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_MMapEvent* PerfDataProto_MMapEvent::default_instance_ = NULL;

PerfDataProto_MMapEvent* PerfDataProto_MMapEvent::New() const {
  return new PerfDataProto_MMapEvent;
}

void PerfDataProto_MMapEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    pid_ = 0u;
    tid_ = 0u;
    start_ = GOOGLE_ULONGLONG(0);
    len_ = GOOGLE_ULONGLONG(0);
    pgoff_ = GOOGLE_ULONGLONG(0);
    maj_ = 0u;
    min_ = 0u;
    ino_ = GOOGLE_ULONGLONG(0);
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    ino_generation_ = GOOGLE_ULONGLONG(0);
    prot_ = 0u;
    flags_ = 0u;
    if (has_filename()) {
      if (filename_ != &::google::protobuf::internal::kEmptyString) {
        filename_->clear();
      }
    }
    filename_md5_prefix_ = GOOGLE_ULONGLONG(0);
    if (has_sample_info()) {
      if (sample_info_ != NULL) sample_info_->::quipper::PerfDataProto_SampleInfo::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_MMapEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 pid = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &pid_)));
          set_has_pid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_tid;
        break;
      }

      // optional uint32 tid = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tid_)));
          set_has_tid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_start;
        break;
      }

      // optional uint64 start = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_start:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &start_)));
          set_has_start();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_len;
        break;
      }

      // optional uint64 len = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_len:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &len_)));
          set_has_len();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_pgoff;
        break;
      }

      // optional uint64 pgoff = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_pgoff:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &pgoff_)));
          set_has_pgoff();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_filename;
        break;
      }

      // optional string filename = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_filename:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_filename()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->filename().data(), this->filename().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_filename_md5_prefix;
        break;
      }

      // optional uint64 filename_md5_prefix = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_filename_md5_prefix:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &filename_md5_prefix_)));
          set_has_filename_md5_prefix();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_sample_info;
        break;
      }

      // optional .quipper.PerfDataProto.SampleInfo sample_info = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sample_info:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_sample_info()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(72)) goto parse_maj;
        break;
      }

      // optional uint32 maj = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_maj:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &maj_)));
          set_has_maj();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(80)) goto parse_min;
        break;
      }

      // optional uint32 min = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_min:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &min_)));
          set_has_min();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(88)) goto parse_ino;
        break;
      }

      // optional uint64 ino = 11;
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_ino:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &ino_)));
          set_has_ino();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96)) goto parse_ino_generation;
        break;
      }

      // optional uint64 ino_generation = 12;
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_ino_generation:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &ino_generation_)));
          set_has_ino_generation();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(104)) goto parse_prot;
        break;
      }

      // optional uint32 prot = 13;
      case 13: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_prot:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &prot_)));
          set_has_prot();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(112)) goto parse_flags;
        break;
      }

      // optional uint32 flags = 14;
      case 14: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_flags:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &flags_)));
          set_has_flags();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_MMapEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->pid(), output);
  }

  // optional uint32 tid = 2;
  if (has_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->tid(), output);
  }

  // optional uint64 start = 3;
  if (has_start()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->start(), output);
  }

  // optional uint64 len = 4;
  if (has_len()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->len(), output);
  }

  // optional uint64 pgoff = 5;
  if (has_pgoff()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(5, this->pgoff(), output);
  }

  // optional string filename = 6;
  if (has_filename()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->filename().data(), this->filename().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      6, this->filename(), output);
  }

  // optional uint64 filename_md5_prefix = 7;
  if (has_filename_md5_prefix()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(7, this->filename_md5_prefix(), output);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 8;
  if (has_sample_info()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      8, this->sample_info(), output);
  }

  // optional uint32 maj = 9;
  if (has_maj()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(9, this->maj(), output);
  }

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

  // optional uint64 ino = 11;
  if (has_ino()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(11, this->ino(), output);
  }

  // optional uint64 ino_generation = 12;
  if (has_ino_generation()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(12, this->ino_generation(), output);
  }

  // optional uint32 prot = 13;
  if (has_prot()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(13, this->prot(), output);
  }

  // optional uint32 flags = 14;
  if (has_flags()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(14, this->flags(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_MMapEvent::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->pid(), target);
  }

  // optional uint32 tid = 2;
  if (has_tid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->tid(), target);
  }

  // optional uint64 start = 3;
  if (has_start()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->start(), target);
  }

  // optional uint64 len = 4;
  if (has_len()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->len(), target);
  }

  // optional uint64 pgoff = 5;
  if (has_pgoff()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(5, this->pgoff(), target);
  }

  // optional string filename = 6;
  if (has_filename()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->filename().data(), this->filename().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        6, this->filename(), target);
  }

  // optional uint64 filename_md5_prefix = 7;
  if (has_filename_md5_prefix()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(7, this->filename_md5_prefix(), target);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 8;
  if (has_sample_info()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        8, this->sample_info(), target);
  }

  // optional uint32 maj = 9;
  if (has_maj()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(9, this->maj(), target);
  }

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

  // optional uint64 ino = 11;
  if (has_ino()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(11, this->ino(), target);
  }

  // optional uint64 ino_generation = 12;
  if (has_ino_generation()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(12, this->ino_generation(), target);
  }

  // optional uint32 prot = 13;
  if (has_prot()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(13, this->prot(), target);
  }

  // optional uint32 flags = 14;
  if (has_flags()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(14, this->flags(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_MMapEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 pid = 1;
    if (has_pid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->pid());
    }

    // optional uint32 tid = 2;
    if (has_tid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tid());
    }

    // optional uint64 start = 3;
    if (has_start()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->start());
    }

    // optional uint64 len = 4;
    if (has_len()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->len());
    }

    // optional uint64 pgoff = 5;
    if (has_pgoff()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->pgoff());
    }

    // optional uint32 maj = 9;
    if (has_maj()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->maj());
    }

    // optional uint32 min = 10;
    if (has_min()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->min());
    }

    // optional uint64 ino = 11;
    if (has_ino()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->ino());
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional uint64 ino_generation = 12;
    if (has_ino_generation()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->ino_generation());
    }

    // optional uint32 prot = 13;
    if (has_prot()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->prot());
    }

    // optional uint32 flags = 14;
    if (has_flags()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->flags());
    }

    // optional string filename = 6;
    if (has_filename()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->filename());
    }

    // optional uint64 filename_md5_prefix = 7;
    if (has_filename_md5_prefix()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->filename_md5_prefix());
    }

    // optional .quipper.PerfDataProto.SampleInfo sample_info = 8;
    if (has_sample_info()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->sample_info());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_MMapEvent::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_MMapEvent* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_MMapEvent*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_MMapEvent::MergeFrom(const PerfDataProto_MMapEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_pid()) {
      set_pid(from.pid());
    }
    if (from.has_tid()) {
      set_tid(from.tid());
    }
    if (from.has_start()) {
      set_start(from.start());
    }
    if (from.has_len()) {
      set_len(from.len());
    }
    if (from.has_pgoff()) {
      set_pgoff(from.pgoff());
    }
    if (from.has_maj()) {
      set_maj(from.maj());
    }
    if (from.has_min()) {
      set_min(from.min());
    }
    if (from.has_ino()) {
      set_ino(from.ino());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_ino_generation()) {
      set_ino_generation(from.ino_generation());
    }
    if (from.has_prot()) {
      set_prot(from.prot());
    }
    if (from.has_flags()) {
      set_flags(from.flags());
    }
    if (from.has_filename()) {
      set_filename(from.filename());
    }
    if (from.has_filename_md5_prefix()) {
      set_filename_md5_prefix(from.filename_md5_prefix());
    }
    if (from.has_sample_info()) {
      mutable_sample_info()->::quipper::PerfDataProto_SampleInfo::MergeFrom(from.sample_info());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_MMapEvent::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_MMapEvent::CopyFrom(const PerfDataProto_MMapEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_MMapEvent::IsInitialized() const {

  return true;
}

void PerfDataProto_MMapEvent::Swap(PerfDataProto_MMapEvent* other) {
  if (other != this) {
    std::swap(pid_, other->pid_);
    std::swap(tid_, other->tid_);
    std::swap(start_, other->start_);
    std::swap(len_, other->len_);
    std::swap(pgoff_, other->pgoff_);
    std::swap(maj_, other->maj_);
    std::swap(min_, other->min_);
    std::swap(ino_, other->ino_);
    std::swap(ino_generation_, other->ino_generation_);
    std::swap(prot_, other->prot_);
    std::swap(flags_, other->flags_);
    std::swap(filename_, other->filename_);
    std::swap(filename_md5_prefix_, other->filename_md5_prefix_);
    std::swap(sample_info_, other->sample_info_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_MMapEvent::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_MMapEvent_descriptor_;
  metadata.reflection = PerfDataProto_MMapEvent_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_BranchStackEntry::kFromIpFieldNumber;
const int PerfDataProto_BranchStackEntry::kToIpFieldNumber;
const int PerfDataProto_BranchStackEntry::kMispredictedFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_BranchStackEntry::PerfDataProto_BranchStackEntry()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_BranchStackEntry::InitAsDefaultInstance() {
}

PerfDataProto_BranchStackEntry::PerfDataProto_BranchStackEntry(const PerfDataProto_BranchStackEntry& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_BranchStackEntry::SharedCtor() {
  _cached_size_ = 0;
  from_ip_ = GOOGLE_ULONGLONG(0);
  to_ip_ = GOOGLE_ULONGLONG(0);
  mispredicted_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_BranchStackEntry::~PerfDataProto_BranchStackEntry() {
  SharedDtor();
}

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

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

const PerfDataProto_BranchStackEntry& PerfDataProto_BranchStackEntry::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_BranchStackEntry* PerfDataProto_BranchStackEntry::default_instance_ = NULL;

PerfDataProto_BranchStackEntry* PerfDataProto_BranchStackEntry::New() const {
  return new PerfDataProto_BranchStackEntry;
}

void PerfDataProto_BranchStackEntry::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    from_ip_ = GOOGLE_ULONGLONG(0);
    to_ip_ = GOOGLE_ULONGLONG(0);
    mispredicted_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_BranchStackEntry::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint64 from_ip = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &from_ip_)));
          set_has_from_ip();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_to_ip;
        break;
      }

      // optional uint64 to_ip = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_to_ip:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &to_ip_)));
          set_has_to_ip();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_mispredicted;
        break;
      }

      // optional bool mispredicted = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_mispredicted:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &mispredicted_)));
          set_has_mispredicted();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_BranchStackEntry::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint64 from_ip = 1;
  if (has_from_ip()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->from_ip(), output);
  }

  // optional uint64 to_ip = 2;
  if (has_to_ip()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->to_ip(), output);
  }

  // optional bool mispredicted = 3;
  if (has_mispredicted()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->mispredicted(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_BranchStackEntry::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint64 from_ip = 1;
  if (has_from_ip()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->from_ip(), target);
  }

  // optional uint64 to_ip = 2;
  if (has_to_ip()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->to_ip(), target);
  }

  // optional bool mispredicted = 3;
  if (has_mispredicted()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->mispredicted(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_BranchStackEntry::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint64 from_ip = 1;
    if (has_from_ip()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->from_ip());
    }

    // optional uint64 to_ip = 2;
    if (has_to_ip()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->to_ip());
    }

    // optional bool mispredicted = 3;
    if (has_mispredicted()) {
      total_size += 1 + 1;
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_BranchStackEntry::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_BranchStackEntry* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_BranchStackEntry*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_BranchStackEntry::MergeFrom(const PerfDataProto_BranchStackEntry& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_from_ip()) {
      set_from_ip(from.from_ip());
    }
    if (from.has_to_ip()) {
      set_to_ip(from.to_ip());
    }
    if (from.has_mispredicted()) {
      set_mispredicted(from.mispredicted());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_BranchStackEntry::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_BranchStackEntry::CopyFrom(const PerfDataProto_BranchStackEntry& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_BranchStackEntry::IsInitialized() const {

  return true;
}

void PerfDataProto_BranchStackEntry::Swap(PerfDataProto_BranchStackEntry* other) {
  if (other != this) {
    std::swap(from_ip_, other->from_ip_);
    std::swap(to_ip_, other->to_ip_);
    std::swap(mispredicted_, other->mispredicted_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_BranchStackEntry::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_BranchStackEntry_descriptor_;
  metadata.reflection = PerfDataProto_BranchStackEntry_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_SampleEvent::kIpFieldNumber;
const int PerfDataProto_SampleEvent::kPidFieldNumber;
const int PerfDataProto_SampleEvent::kTidFieldNumber;
const int PerfDataProto_SampleEvent::kSampleTimeNsFieldNumber;
const int PerfDataProto_SampleEvent::kAddrFieldNumber;
const int PerfDataProto_SampleEvent::kIdFieldNumber;
const int PerfDataProto_SampleEvent::kStreamIdFieldNumber;
const int PerfDataProto_SampleEvent::kPeriodFieldNumber;
const int PerfDataProto_SampleEvent::kCpuFieldNumber;
const int PerfDataProto_SampleEvent::kRawSizeFieldNumber;
const int PerfDataProto_SampleEvent::kCallchainFieldNumber;
const int PerfDataProto_SampleEvent::kBranchStackFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_SampleEvent::PerfDataProto_SampleEvent()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_SampleEvent::InitAsDefaultInstance() {
}

PerfDataProto_SampleEvent::PerfDataProto_SampleEvent(const PerfDataProto_SampleEvent& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_SampleEvent::SharedCtor() {
  _cached_size_ = 0;
  ip_ = GOOGLE_ULONGLONG(0);
  pid_ = 0u;
  tid_ = 0u;
  sample_time_ns_ = GOOGLE_ULONGLONG(0);
  addr_ = GOOGLE_ULONGLONG(0);
  id_ = GOOGLE_ULONGLONG(0);
  stream_id_ = GOOGLE_ULONGLONG(0);
  period_ = GOOGLE_ULONGLONG(0);
  cpu_ = 0u;
  raw_size_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_SampleEvent::~PerfDataProto_SampleEvent() {
  SharedDtor();
}

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

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

const PerfDataProto_SampleEvent& PerfDataProto_SampleEvent::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_SampleEvent* PerfDataProto_SampleEvent::default_instance_ = NULL;

PerfDataProto_SampleEvent* PerfDataProto_SampleEvent::New() const {
  return new PerfDataProto_SampleEvent;
}

void PerfDataProto_SampleEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    ip_ = GOOGLE_ULONGLONG(0);
    pid_ = 0u;
    tid_ = 0u;
    sample_time_ns_ = GOOGLE_ULONGLONG(0);
    addr_ = GOOGLE_ULONGLONG(0);
    id_ = GOOGLE_ULONGLONG(0);
    stream_id_ = GOOGLE_ULONGLONG(0);
    period_ = GOOGLE_ULONGLONG(0);
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    cpu_ = 0u;
    raw_size_ = 0u;
  }
  callchain_.Clear();
  branch_stack_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_SampleEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint64 ip = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &ip_)));
          set_has_ip();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_pid;
        break;
      }

      // optional uint32 pid = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_pid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &pid_)));
          set_has_pid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_tid;
        break;
      }

      // optional uint32 tid = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tid_)));
          set_has_tid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_sample_time_ns;
        break;
      }

      // optional uint64 sample_time_ns = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_sample_time_ns:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &sample_time_ns_)));
          set_has_sample_time_ns();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_addr;
        break;
      }

      // optional uint64 addr = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_addr:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &addr_)));
          set_has_addr();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_id;
        break;
      }

      // optional uint64 id = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_id:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &id_)));
          set_has_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_stream_id;
        break;
      }

      // optional uint64 stream_id = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_stream_id:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &stream_id_)));
          set_has_stream_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(64)) goto parse_period;
        break;
      }

      // optional uint64 period = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_period:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &period_)));
          set_has_period();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(72)) goto parse_cpu;
        break;
      }

      // optional uint32 cpu = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_cpu:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &cpu_)));
          set_has_cpu();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(80)) goto parse_raw_size;
        break;
      }

      // optional uint32 raw_size = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_raw_size:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &raw_size_)));
          set_has_raw_size();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(88)) goto parse_callchain;
        break;
      }

      // repeated uint64 callchain = 11;
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_callchain:
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 1, 88, input, this->mutable_callchain())));
        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
                   == ::google::protobuf::internal::WireFormatLite::
                      WIRETYPE_LENGTH_DELIMITED) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, this->mutable_callchain())));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(88)) goto parse_callchain;
        if (input->ExpectTag(98)) goto parse_branch_stack;
        break;
      }

      // repeated .quipper.PerfDataProto.BranchStackEntry branch_stack = 12;
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_branch_stack:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_branch_stack()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(98)) goto parse_branch_stack;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_SampleEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint64 ip = 1;
  if (has_ip()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->ip(), output);
  }

  // optional uint32 pid = 2;
  if (has_pid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->pid(), output);
  }

  // optional uint32 tid = 3;
  if (has_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->tid(), output);
  }

  // optional uint64 sample_time_ns = 4;
  if (has_sample_time_ns()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->sample_time_ns(), output);
  }

  // optional uint64 addr = 5;
  if (has_addr()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(5, this->addr(), output);
  }

  // optional uint64 id = 6;
  if (has_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(6, this->id(), output);
  }

  // optional uint64 stream_id = 7;
  if (has_stream_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(7, this->stream_id(), output);
  }

  // optional uint64 period = 8;
  if (has_period()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(8, this->period(), output);
  }

  // optional uint32 cpu = 9;
  if (has_cpu()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(9, this->cpu(), output);
  }

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

  // repeated uint64 callchain = 11;
  for (int i = 0; i < this->callchain_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
      11, this->callchain(i), output);
  }

  // repeated .quipper.PerfDataProto.BranchStackEntry branch_stack = 12;
  for (int i = 0; i < this->branch_stack_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      12, this->branch_stack(i), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_SampleEvent::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint64 ip = 1;
  if (has_ip()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->ip(), target);
  }

  // optional uint32 pid = 2;
  if (has_pid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->pid(), target);
  }

  // optional uint32 tid = 3;
  if (has_tid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->tid(), target);
  }

  // optional uint64 sample_time_ns = 4;
  if (has_sample_time_ns()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->sample_time_ns(), target);
  }

  // optional uint64 addr = 5;
  if (has_addr()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(5, this->addr(), target);
  }

  // optional uint64 id = 6;
  if (has_id()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(6, this->id(), target);
  }

  // optional uint64 stream_id = 7;
  if (has_stream_id()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(7, this->stream_id(), target);
  }

  // optional uint64 period = 8;
  if (has_period()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(8, this->period(), target);
  }

  // optional uint32 cpu = 9;
  if (has_cpu()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(9, this->cpu(), target);
  }

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

  // repeated uint64 callchain = 11;
  for (int i = 0; i < this->callchain_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteUInt64ToArray(11, this->callchain(i), target);
  }

  // repeated .quipper.PerfDataProto.BranchStackEntry branch_stack = 12;
  for (int i = 0; i < this->branch_stack_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        12, this->branch_stack(i), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_SampleEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint64 ip = 1;
    if (has_ip()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->ip());
    }

    // optional uint32 pid = 2;
    if (has_pid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->pid());
    }

    // optional uint32 tid = 3;
    if (has_tid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tid());
    }

    // optional uint64 sample_time_ns = 4;
    if (has_sample_time_ns()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->sample_time_ns());
    }

    // optional uint64 addr = 5;
    if (has_addr()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->addr());
    }

    // optional uint64 id = 6;
    if (has_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->id());
    }

    // optional uint64 stream_id = 7;
    if (has_stream_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->stream_id());
    }

    // optional uint64 period = 8;
    if (has_period()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->period());
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional uint32 cpu = 9;
    if (has_cpu()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->cpu());
    }

    // optional uint32 raw_size = 10;
    if (has_raw_size()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->raw_size());
    }

  }
  // repeated uint64 callchain = 11;
  {
    int data_size = 0;
    for (int i = 0; i < this->callchain_size(); i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::
        UInt64Size(this->callchain(i));
    }
    total_size += 1 * this->callchain_size() + data_size;
  }

  // repeated .quipper.PerfDataProto.BranchStackEntry branch_stack = 12;
  total_size += 1 * this->branch_stack_size();
  for (int i = 0; i < this->branch_stack_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->branch_stack(i));
  }

  if (!unknown_fields().empty()) {
    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 PerfDataProto_SampleEvent::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_SampleEvent* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_SampleEvent*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_SampleEvent::MergeFrom(const PerfDataProto_SampleEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  callchain_.MergeFrom(from.callchain_);
  branch_stack_.MergeFrom(from.branch_stack_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_ip()) {
      set_ip(from.ip());
    }
    if (from.has_pid()) {
      set_pid(from.pid());
    }
    if (from.has_tid()) {
      set_tid(from.tid());
    }
    if (from.has_sample_time_ns()) {
      set_sample_time_ns(from.sample_time_ns());
    }
    if (from.has_addr()) {
      set_addr(from.addr());
    }
    if (from.has_id()) {
      set_id(from.id());
    }
    if (from.has_stream_id()) {
      set_stream_id(from.stream_id());
    }
    if (from.has_period()) {
      set_period(from.period());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_cpu()) {
      set_cpu(from.cpu());
    }
    if (from.has_raw_size()) {
      set_raw_size(from.raw_size());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_SampleEvent::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_SampleEvent::CopyFrom(const PerfDataProto_SampleEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_SampleEvent::IsInitialized() const {

  return true;
}

void PerfDataProto_SampleEvent::Swap(PerfDataProto_SampleEvent* other) {
  if (other != this) {
    std::swap(ip_, other->ip_);
    std::swap(pid_, other->pid_);
    std::swap(tid_, other->tid_);
    std::swap(sample_time_ns_, other->sample_time_ns_);
    std::swap(addr_, other->addr_);
    std::swap(id_, other->id_);
    std::swap(stream_id_, other->stream_id_);
    std::swap(period_, other->period_);
    std::swap(cpu_, other->cpu_);
    std::swap(raw_size_, other->raw_size_);
    callchain_.Swap(&other->callchain_);
    branch_stack_.Swap(&other->branch_stack_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_SampleEvent::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_SampleEvent_descriptor_;
  metadata.reflection = PerfDataProto_SampleEvent_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_ForkEvent::kPidFieldNumber;
const int PerfDataProto_ForkEvent::kPpidFieldNumber;
const int PerfDataProto_ForkEvent::kTidFieldNumber;
const int PerfDataProto_ForkEvent::kPtidFieldNumber;
const int PerfDataProto_ForkEvent::kForkTimeNsFieldNumber;
const int PerfDataProto_ForkEvent::kSampleInfoFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_ForkEvent::PerfDataProto_ForkEvent()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_ForkEvent::InitAsDefaultInstance() {
  sample_info_ = const_cast< ::quipper::PerfDataProto_SampleInfo*>(&::quipper::PerfDataProto_SampleInfo::default_instance());
}

PerfDataProto_ForkEvent::PerfDataProto_ForkEvent(const PerfDataProto_ForkEvent& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_ForkEvent::SharedCtor() {
  _cached_size_ = 0;
  pid_ = 0u;
  ppid_ = 0u;
  tid_ = 0u;
  ptid_ = 0u;
  fork_time_ns_ = GOOGLE_ULONGLONG(0);
  sample_info_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_ForkEvent::~PerfDataProto_ForkEvent() {
  SharedDtor();
}

void PerfDataProto_ForkEvent::SharedDtor() {
  if (this != default_instance_) {
    delete sample_info_;
  }
}

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

const PerfDataProto_ForkEvent& PerfDataProto_ForkEvent::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_ForkEvent* PerfDataProto_ForkEvent::default_instance_ = NULL;

PerfDataProto_ForkEvent* PerfDataProto_ForkEvent::New() const {
  return new PerfDataProto_ForkEvent;
}

void PerfDataProto_ForkEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    pid_ = 0u;
    ppid_ = 0u;
    tid_ = 0u;
    ptid_ = 0u;
    fork_time_ns_ = GOOGLE_ULONGLONG(0);
    if (has_sample_info()) {
      if (sample_info_ != NULL) sample_info_->::quipper::PerfDataProto_SampleInfo::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_ForkEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 pid = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &pid_)));
          set_has_pid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_ppid;
        break;
      }

      // optional uint32 ppid = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_ppid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &ppid_)));
          set_has_ppid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_tid;
        break;
      }

      // optional uint32 tid = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tid_)));
          set_has_tid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_ptid;
        break;
      }

      // optional uint32 ptid = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_ptid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &ptid_)));
          set_has_ptid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_fork_time_ns;
        break;
      }

      // optional uint64 fork_time_ns = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_fork_time_ns:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &fork_time_ns_)));
          set_has_fork_time_ns();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(90)) goto parse_sample_info;
        break;
      }

      // optional .quipper.PerfDataProto.SampleInfo sample_info = 11;
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sample_info:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_sample_info()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_ForkEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->pid(), output);
  }

  // optional uint32 ppid = 2;
  if (has_ppid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->ppid(), output);
  }

  // optional uint32 tid = 3;
  if (has_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->tid(), output);
  }

  // optional uint32 ptid = 4;
  if (has_ptid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->ptid(), output);
  }

  // optional uint64 fork_time_ns = 5;
  if (has_fork_time_ns()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(5, this->fork_time_ns(), output);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 11;
  if (has_sample_info()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      11, this->sample_info(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_ForkEvent::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->pid(), target);
  }

  // optional uint32 ppid = 2;
  if (has_ppid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->ppid(), target);
  }

  // optional uint32 tid = 3;
  if (has_tid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->tid(), target);
  }

  // optional uint32 ptid = 4;
  if (has_ptid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(4, this->ptid(), target);
  }

  // optional uint64 fork_time_ns = 5;
  if (has_fork_time_ns()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(5, this->fork_time_ns(), target);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 11;
  if (has_sample_info()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        11, this->sample_info(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_ForkEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 pid = 1;
    if (has_pid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->pid());
    }

    // optional uint32 ppid = 2;
    if (has_ppid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->ppid());
    }

    // optional uint32 tid = 3;
    if (has_tid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tid());
    }

    // optional uint32 ptid = 4;
    if (has_ptid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->ptid());
    }

    // optional uint64 fork_time_ns = 5;
    if (has_fork_time_ns()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->fork_time_ns());
    }

    // optional .quipper.PerfDataProto.SampleInfo sample_info = 11;
    if (has_sample_info()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->sample_info());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_ForkEvent::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_ForkEvent* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_ForkEvent*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_ForkEvent::MergeFrom(const PerfDataProto_ForkEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_pid()) {
      set_pid(from.pid());
    }
    if (from.has_ppid()) {
      set_ppid(from.ppid());
    }
    if (from.has_tid()) {
      set_tid(from.tid());
    }
    if (from.has_ptid()) {
      set_ptid(from.ptid());
    }
    if (from.has_fork_time_ns()) {
      set_fork_time_ns(from.fork_time_ns());
    }
    if (from.has_sample_info()) {
      mutable_sample_info()->::quipper::PerfDataProto_SampleInfo::MergeFrom(from.sample_info());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_ForkEvent::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_ForkEvent::CopyFrom(const PerfDataProto_ForkEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_ForkEvent::IsInitialized() const {

  return true;
}

void PerfDataProto_ForkEvent::Swap(PerfDataProto_ForkEvent* other) {
  if (other != this) {
    std::swap(pid_, other->pid_);
    std::swap(ppid_, other->ppid_);
    std::swap(tid_, other->tid_);
    std::swap(ptid_, other->ptid_);
    std::swap(fork_time_ns_, other->fork_time_ns_);
    std::swap(sample_info_, other->sample_info_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_ForkEvent::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_ForkEvent_descriptor_;
  metadata.reflection = PerfDataProto_ForkEvent_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_LostEvent::kIdFieldNumber;
const int PerfDataProto_LostEvent::kLostFieldNumber;
const int PerfDataProto_LostEvent::kSampleInfoFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_LostEvent::PerfDataProto_LostEvent()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_LostEvent::InitAsDefaultInstance() {
  sample_info_ = const_cast< ::quipper::PerfDataProto_SampleInfo*>(&::quipper::PerfDataProto_SampleInfo::default_instance());
}

PerfDataProto_LostEvent::PerfDataProto_LostEvent(const PerfDataProto_LostEvent& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_LostEvent::SharedCtor() {
  _cached_size_ = 0;
  id_ = GOOGLE_ULONGLONG(0);
  lost_ = GOOGLE_ULONGLONG(0);
  sample_info_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_LostEvent::~PerfDataProto_LostEvent() {
  SharedDtor();
}

void PerfDataProto_LostEvent::SharedDtor() {
  if (this != default_instance_) {
    delete sample_info_;
  }
}

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

const PerfDataProto_LostEvent& PerfDataProto_LostEvent::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_LostEvent* PerfDataProto_LostEvent::default_instance_ = NULL;

PerfDataProto_LostEvent* PerfDataProto_LostEvent::New() const {
  return new PerfDataProto_LostEvent;
}

void PerfDataProto_LostEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    id_ = GOOGLE_ULONGLONG(0);
    lost_ = GOOGLE_ULONGLONG(0);
    if (has_sample_info()) {
      if (sample_info_ != NULL) sample_info_->::quipper::PerfDataProto_SampleInfo::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_LostEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint64 id = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &id_)));
          set_has_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_lost;
        break;
      }

      // optional uint64 lost = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_lost:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &lost_)));
          set_has_lost();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_sample_info;
        break;
      }

      // optional .quipper.PerfDataProto.SampleInfo sample_info = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sample_info:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_sample_info()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_LostEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint64 id = 1;
  if (has_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->id(), output);
  }

  // optional uint64 lost = 2;
  if (has_lost()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->lost(), output);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 3;
  if (has_sample_info()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3, this->sample_info(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_LostEvent::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint64 id = 1;
  if (has_id()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->id(), target);
  }

  // optional uint64 lost = 2;
  if (has_lost()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->lost(), target);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 3;
  if (has_sample_info()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        3, this->sample_info(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_LostEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint64 id = 1;
    if (has_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->id());
    }

    // optional uint64 lost = 2;
    if (has_lost()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->lost());
    }

    // optional .quipper.PerfDataProto.SampleInfo sample_info = 3;
    if (has_sample_info()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->sample_info());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_LostEvent::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_LostEvent* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_LostEvent*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_LostEvent::MergeFrom(const PerfDataProto_LostEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_id()) {
      set_id(from.id());
    }
    if (from.has_lost()) {
      set_lost(from.lost());
    }
    if (from.has_sample_info()) {
      mutable_sample_info()->::quipper::PerfDataProto_SampleInfo::MergeFrom(from.sample_info());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_LostEvent::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_LostEvent::CopyFrom(const PerfDataProto_LostEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_LostEvent::IsInitialized() const {

  return true;
}

void PerfDataProto_LostEvent::Swap(PerfDataProto_LostEvent* other) {
  if (other != this) {
    std::swap(id_, other->id_);
    std::swap(lost_, other->lost_);
    std::swap(sample_info_, other->sample_info_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_LostEvent::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_LostEvent_descriptor_;
  metadata.reflection = PerfDataProto_LostEvent_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_ThrottleEvent::kTimeNsFieldNumber;
const int PerfDataProto_ThrottleEvent::kIdFieldNumber;
const int PerfDataProto_ThrottleEvent::kStreamIdFieldNumber;
const int PerfDataProto_ThrottleEvent::kSampleInfoFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_ThrottleEvent::PerfDataProto_ThrottleEvent()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_ThrottleEvent::InitAsDefaultInstance() {
  sample_info_ = const_cast< ::quipper::PerfDataProto_SampleInfo*>(&::quipper::PerfDataProto_SampleInfo::default_instance());
}

PerfDataProto_ThrottleEvent::PerfDataProto_ThrottleEvent(const PerfDataProto_ThrottleEvent& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_ThrottleEvent::SharedCtor() {
  _cached_size_ = 0;
  time_ns_ = GOOGLE_ULONGLONG(0);
  id_ = GOOGLE_ULONGLONG(0);
  stream_id_ = GOOGLE_ULONGLONG(0);
  sample_info_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_ThrottleEvent::~PerfDataProto_ThrottleEvent() {
  SharedDtor();
}

void PerfDataProto_ThrottleEvent::SharedDtor() {
  if (this != default_instance_) {
    delete sample_info_;
  }
}

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

const PerfDataProto_ThrottleEvent& PerfDataProto_ThrottleEvent::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_ThrottleEvent* PerfDataProto_ThrottleEvent::default_instance_ = NULL;

PerfDataProto_ThrottleEvent* PerfDataProto_ThrottleEvent::New() const {
  return new PerfDataProto_ThrottleEvent;
}

void PerfDataProto_ThrottleEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    time_ns_ = GOOGLE_ULONGLONG(0);
    id_ = GOOGLE_ULONGLONG(0);
    stream_id_ = GOOGLE_ULONGLONG(0);
    if (has_sample_info()) {
      if (sample_info_ != NULL) sample_info_->::quipper::PerfDataProto_SampleInfo::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_ThrottleEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint64 time_ns = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &time_ns_)));
          set_has_time_ns();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_id;
        break;
      }

      // optional uint64 id = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_id:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &id_)));
          set_has_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_stream_id;
        break;
      }

      // optional uint64 stream_id = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_stream_id:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &stream_id_)));
          set_has_stream_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_sample_info;
        break;
      }

      // optional .quipper.PerfDataProto.SampleInfo sample_info = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sample_info:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_sample_info()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_ThrottleEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint64 time_ns = 1;
  if (has_time_ns()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->time_ns(), output);
  }

  // optional uint64 id = 2;
  if (has_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->id(), output);
  }

  // optional uint64 stream_id = 3;
  if (has_stream_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->stream_id(), output);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 4;
  if (has_sample_info()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4, this->sample_info(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_ThrottleEvent::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint64 time_ns = 1;
  if (has_time_ns()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->time_ns(), target);
  }

  // optional uint64 id = 2;
  if (has_id()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->id(), target);
  }

  // optional uint64 stream_id = 3;
  if (has_stream_id()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->stream_id(), target);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 4;
  if (has_sample_info()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        4, this->sample_info(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_ThrottleEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint64 time_ns = 1;
    if (has_time_ns()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->time_ns());
    }

    // optional uint64 id = 2;
    if (has_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->id());
    }

    // optional uint64 stream_id = 3;
    if (has_stream_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->stream_id());
    }

    // optional .quipper.PerfDataProto.SampleInfo sample_info = 4;
    if (has_sample_info()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->sample_info());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_ThrottleEvent::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_ThrottleEvent* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_ThrottleEvent*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_ThrottleEvent::MergeFrom(const PerfDataProto_ThrottleEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_time_ns()) {
      set_time_ns(from.time_ns());
    }
    if (from.has_id()) {
      set_id(from.id());
    }
    if (from.has_stream_id()) {
      set_stream_id(from.stream_id());
    }
    if (from.has_sample_info()) {
      mutable_sample_info()->::quipper::PerfDataProto_SampleInfo::MergeFrom(from.sample_info());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_ThrottleEvent::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_ThrottleEvent::CopyFrom(const PerfDataProto_ThrottleEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_ThrottleEvent::IsInitialized() const {

  return true;
}

void PerfDataProto_ThrottleEvent::Swap(PerfDataProto_ThrottleEvent* other) {
  if (other != this) {
    std::swap(time_ns_, other->time_ns_);
    std::swap(id_, other->id_);
    std::swap(stream_id_, other->stream_id_);
    std::swap(sample_info_, other->sample_info_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_ThrottleEvent::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_ThrottleEvent_descriptor_;
  metadata.reflection = PerfDataProto_ThrottleEvent_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_ReadEvent::kPidFieldNumber;
const int PerfDataProto_ReadEvent::kTidFieldNumber;
const int PerfDataProto_ReadEvent::kValueFieldNumber;
const int PerfDataProto_ReadEvent::kTimeEnabledFieldNumber;
const int PerfDataProto_ReadEvent::kTimeRunningFieldNumber;
const int PerfDataProto_ReadEvent::kIdFieldNumber;
const int PerfDataProto_ReadEvent::kSampleInfoFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_ReadEvent::PerfDataProto_ReadEvent()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_ReadEvent::InitAsDefaultInstance() {
  sample_info_ = const_cast< ::quipper::PerfDataProto_SampleInfo*>(&::quipper::PerfDataProto_SampleInfo::default_instance());
}

PerfDataProto_ReadEvent::PerfDataProto_ReadEvent(const PerfDataProto_ReadEvent& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_ReadEvent::SharedCtor() {
  _cached_size_ = 0;
  pid_ = 0u;
  tid_ = 0u;
  value_ = GOOGLE_ULONGLONG(0);
  time_enabled_ = GOOGLE_ULONGLONG(0);
  time_running_ = GOOGLE_ULONGLONG(0);
  id_ = GOOGLE_ULONGLONG(0);
  sample_info_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_ReadEvent::~PerfDataProto_ReadEvent() {
  SharedDtor();
}

void PerfDataProto_ReadEvent::SharedDtor() {
  if (this != default_instance_) {
    delete sample_info_;
  }
}

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

const PerfDataProto_ReadEvent& PerfDataProto_ReadEvent::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_ReadEvent* PerfDataProto_ReadEvent::default_instance_ = NULL;

PerfDataProto_ReadEvent* PerfDataProto_ReadEvent::New() const {
  return new PerfDataProto_ReadEvent;
}

void PerfDataProto_ReadEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    pid_ = 0u;
    tid_ = 0u;
    value_ = GOOGLE_ULONGLONG(0);
    time_enabled_ = GOOGLE_ULONGLONG(0);
    time_running_ = GOOGLE_ULONGLONG(0);
    id_ = GOOGLE_ULONGLONG(0);
    if (has_sample_info()) {
      if (sample_info_ != NULL) sample_info_->::quipper::PerfDataProto_SampleInfo::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_ReadEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 pid = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &pid_)));
          set_has_pid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_tid;
        break;
      }

      // optional uint32 tid = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tid_)));
          set_has_tid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_value;
        break;
      }

      // optional uint64 value = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_value:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &value_)));
          set_has_value();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_time_enabled;
        break;
      }

      // optional uint64 time_enabled = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_time_enabled:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &time_enabled_)));
          set_has_time_enabled();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_time_running;
        break;
      }

      // optional uint64 time_running = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_time_running:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &time_running_)));
          set_has_time_running();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_id;
        break;
      }

      // optional uint64 id = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_id:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &id_)));
          set_has_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_sample_info;
        break;
      }

      // optional .quipper.PerfDataProto.SampleInfo sample_info = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sample_info:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_sample_info()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_ReadEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->pid(), output);
  }

  // optional uint32 tid = 2;
  if (has_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->tid(), output);
  }

  // optional uint64 value = 3;
  if (has_value()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->value(), output);
  }

  // optional uint64 time_enabled = 4;
  if (has_time_enabled()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->time_enabled(), output);
  }

  // optional uint64 time_running = 5;
  if (has_time_running()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(5, this->time_running(), output);
  }

  // optional uint64 id = 6;
  if (has_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(6, this->id(), output);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 7;
  if (has_sample_info()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7, this->sample_info(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_ReadEvent::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 pid = 1;
  if (has_pid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->pid(), target);
  }

  // optional uint32 tid = 2;
  if (has_tid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->tid(), target);
  }

  // optional uint64 value = 3;
  if (has_value()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->value(), target);
  }

  // optional uint64 time_enabled = 4;
  if (has_time_enabled()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->time_enabled(), target);
  }

  // optional uint64 time_running = 5;
  if (has_time_running()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(5, this->time_running(), target);
  }

  // optional uint64 id = 6;
  if (has_id()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(6, this->id(), target);
  }

  // optional .quipper.PerfDataProto.SampleInfo sample_info = 7;
  if (has_sample_info()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        7, this->sample_info(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_ReadEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 pid = 1;
    if (has_pid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->pid());
    }

    // optional uint32 tid = 2;
    if (has_tid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tid());
    }

    // optional uint64 value = 3;
    if (has_value()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->value());
    }

    // optional uint64 time_enabled = 4;
    if (has_time_enabled()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->time_enabled());
    }

    // optional uint64 time_running = 5;
    if (has_time_running()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->time_running());
    }

    // optional uint64 id = 6;
    if (has_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->id());
    }

    // optional .quipper.PerfDataProto.SampleInfo sample_info = 7;
    if (has_sample_info()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->sample_info());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_ReadEvent::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_ReadEvent* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_ReadEvent*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_ReadEvent::MergeFrom(const PerfDataProto_ReadEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_pid()) {
      set_pid(from.pid());
    }
    if (from.has_tid()) {
      set_tid(from.tid());
    }
    if (from.has_value()) {
      set_value(from.value());
    }
    if (from.has_time_enabled()) {
      set_time_enabled(from.time_enabled());
    }
    if (from.has_time_running()) {
      set_time_running(from.time_running());
    }
    if (from.has_id()) {
      set_id(from.id());
    }
    if (from.has_sample_info()) {
      mutable_sample_info()->::quipper::PerfDataProto_SampleInfo::MergeFrom(from.sample_info());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_ReadEvent::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_ReadEvent::CopyFrom(const PerfDataProto_ReadEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_ReadEvent::IsInitialized() const {

  return true;
}

void PerfDataProto_ReadEvent::Swap(PerfDataProto_ReadEvent* other) {
  if (other != this) {
    std::swap(pid_, other->pid_);
    std::swap(tid_, other->tid_);
    std::swap(value_, other->value_);
    std::swap(time_enabled_, other->time_enabled_);
    std::swap(time_running_, other->time_running_);
    std::swap(id_, other->id_);
    std::swap(sample_info_, other->sample_info_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_ReadEvent::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_ReadEvent_descriptor_;
  metadata.reflection = PerfDataProto_ReadEvent_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_EventHeader::kTypeFieldNumber;
const int PerfDataProto_EventHeader::kMiscFieldNumber;
const int PerfDataProto_EventHeader::kSizeFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_EventHeader::PerfDataProto_EventHeader()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_EventHeader::InitAsDefaultInstance() {
}

PerfDataProto_EventHeader::PerfDataProto_EventHeader(const PerfDataProto_EventHeader& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_EventHeader::SharedCtor() {
  _cached_size_ = 0;
  type_ = 0u;
  misc_ = 0u;
  size_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_EventHeader::~PerfDataProto_EventHeader() {
  SharedDtor();
}

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

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

const PerfDataProto_EventHeader& PerfDataProto_EventHeader::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_EventHeader* PerfDataProto_EventHeader::default_instance_ = NULL;

PerfDataProto_EventHeader* PerfDataProto_EventHeader::New() const {
  return new PerfDataProto_EventHeader;
}

void PerfDataProto_EventHeader::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    type_ = 0u;
    misc_ = 0u;
    size_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_EventHeader::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 type = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &type_)));
          set_has_type();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_misc;
        break;
      }

      // optional uint32 misc = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_misc:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &misc_)));
          set_has_misc();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_size;
        break;
      }

      // optional uint32 size = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_size:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &size_)));
          set_has_size();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_EventHeader::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 type = 1;
  if (has_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->type(), output);
  }

  // optional uint32 misc = 2;
  if (has_misc()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->misc(), output);
  }

  // optional uint32 size = 3;
  if (has_size()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->size(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_EventHeader::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 type = 1;
  if (has_type()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->type(), target);
  }

  // optional uint32 misc = 2;
  if (has_misc()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->misc(), target);
  }

  // optional uint32 size = 3;
  if (has_size()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->size(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_EventHeader::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 type = 1;
    if (has_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->type());
    }

    // optional uint32 misc = 2;
    if (has_misc()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->misc());
    }

    // optional uint32 size = 3;
    if (has_size()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->size());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_EventHeader::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_EventHeader* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_EventHeader*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_EventHeader::MergeFrom(const PerfDataProto_EventHeader& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_type()) {
      set_type(from.type());
    }
    if (from.has_misc()) {
      set_misc(from.misc());
    }
    if (from.has_size()) {
      set_size(from.size());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_EventHeader::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_EventHeader::CopyFrom(const PerfDataProto_EventHeader& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_EventHeader::IsInitialized() const {

  return true;
}

void PerfDataProto_EventHeader::Swap(PerfDataProto_EventHeader* other) {
  if (other != this) {
    std::swap(type_, other->type_);
    std::swap(misc_, other->misc_);
    std::swap(size_, other->size_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_EventHeader::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_EventHeader_descriptor_;
  metadata.reflection = PerfDataProto_EventHeader_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfEvent::kHeaderFieldNumber;
const int PerfDataProto_PerfEvent::kMmapEventFieldNumber;
const int PerfDataProto_PerfEvent::kSampleEventFieldNumber;
const int PerfDataProto_PerfEvent::kCommEventFieldNumber;
const int PerfDataProto_PerfEvent::kForkEventFieldNumber;
const int PerfDataProto_PerfEvent::kLostEventFieldNumber;
const int PerfDataProto_PerfEvent::kThrottleEventFieldNumber;
const int PerfDataProto_PerfEvent::kReadEventFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfEvent::PerfDataProto_PerfEvent()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfEvent::InitAsDefaultInstance() {
  header_ = const_cast< ::quipper::PerfDataProto_EventHeader*>(&::quipper::PerfDataProto_EventHeader::default_instance());
  mmap_event_ = const_cast< ::quipper::PerfDataProto_MMapEvent*>(&::quipper::PerfDataProto_MMapEvent::default_instance());
  sample_event_ = const_cast< ::quipper::PerfDataProto_SampleEvent*>(&::quipper::PerfDataProto_SampleEvent::default_instance());
  comm_event_ = const_cast< ::quipper::PerfDataProto_CommEvent*>(&::quipper::PerfDataProto_CommEvent::default_instance());
  fork_event_ = const_cast< ::quipper::PerfDataProto_ForkEvent*>(&::quipper::PerfDataProto_ForkEvent::default_instance());
  lost_event_ = const_cast< ::quipper::PerfDataProto_LostEvent*>(&::quipper::PerfDataProto_LostEvent::default_instance());
  throttle_event_ = const_cast< ::quipper::PerfDataProto_ThrottleEvent*>(&::quipper::PerfDataProto_ThrottleEvent::default_instance());
  read_event_ = const_cast< ::quipper::PerfDataProto_ReadEvent*>(&::quipper::PerfDataProto_ReadEvent::default_instance());
}

PerfDataProto_PerfEvent::PerfDataProto_PerfEvent(const PerfDataProto_PerfEvent& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfEvent::SharedCtor() {
  _cached_size_ = 0;
  header_ = NULL;
  mmap_event_ = NULL;
  sample_event_ = NULL;
  comm_event_ = NULL;
  fork_event_ = NULL;
  lost_event_ = NULL;
  throttle_event_ = NULL;
  read_event_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfEvent::~PerfDataProto_PerfEvent() {
  SharedDtor();
}

void PerfDataProto_PerfEvent::SharedDtor() {
  if (this != default_instance_) {
    delete header_;
    delete mmap_event_;
    delete sample_event_;
    delete comm_event_;
    delete fork_event_;
    delete lost_event_;
    delete throttle_event_;
    delete read_event_;
  }
}

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

const PerfDataProto_PerfEvent& PerfDataProto_PerfEvent::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfEvent* PerfDataProto_PerfEvent::default_instance_ = NULL;

PerfDataProto_PerfEvent* PerfDataProto_PerfEvent::New() const {
  return new PerfDataProto_PerfEvent;
}

void PerfDataProto_PerfEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_header()) {
      if (header_ != NULL) header_->::quipper::PerfDataProto_EventHeader::Clear();
    }
    if (has_mmap_event()) {
      if (mmap_event_ != NULL) mmap_event_->::quipper::PerfDataProto_MMapEvent::Clear();
    }
    if (has_sample_event()) {
      if (sample_event_ != NULL) sample_event_->::quipper::PerfDataProto_SampleEvent::Clear();
    }
    if (has_comm_event()) {
      if (comm_event_ != NULL) comm_event_->::quipper::PerfDataProto_CommEvent::Clear();
    }
    if (has_fork_event()) {
      if (fork_event_ != NULL) fork_event_->::quipper::PerfDataProto_ForkEvent::Clear();
    }
    if (has_lost_event()) {
      if (lost_event_ != NULL) lost_event_->::quipper::PerfDataProto_LostEvent::Clear();
    }
    if (has_throttle_event()) {
      if (throttle_event_ != NULL) throttle_event_->::quipper::PerfDataProto_ThrottleEvent::Clear();
    }
    if (has_read_event()) {
      if (read_event_ != NULL) read_event_->::quipper::PerfDataProto_ReadEvent::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .quipper.PerfDataProto.EventHeader header = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_header()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_mmap_event;
        break;
      }

      // optional .quipper.PerfDataProto.MMapEvent mmap_event = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_mmap_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_mmap_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_sample_event;
        break;
      }

      // optional .quipper.PerfDataProto.SampleEvent sample_event = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sample_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_sample_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_comm_event;
        break;
      }

      // optional .quipper.PerfDataProto.CommEvent comm_event = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_comm_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_comm_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_fork_event;
        break;
      }

      // optional .quipper.PerfDataProto.ForkEvent fork_event = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_fork_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_fork_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_lost_event;
        break;
      }

      // optional .quipper.PerfDataProto.LostEvent lost_event = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_lost_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_lost_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_throttle_event;
        break;
      }

      // optional .quipper.PerfDataProto.ThrottleEvent throttle_event = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_throttle_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_throttle_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_read_event;
        break;
      }

      // optional .quipper.PerfDataProto.ReadEvent read_event = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_read_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_read_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .quipper.PerfDataProto.EventHeader header = 1;
  if (has_header()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->header(), output);
  }

  // optional .quipper.PerfDataProto.MMapEvent mmap_event = 2;
  if (has_mmap_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->mmap_event(), output);
  }

  // optional .quipper.PerfDataProto.SampleEvent sample_event = 3;
  if (has_sample_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3, this->sample_event(), output);
  }

  // optional .quipper.PerfDataProto.CommEvent comm_event = 4;
  if (has_comm_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4, this->comm_event(), output);
  }

  // optional .quipper.PerfDataProto.ForkEvent fork_event = 5;
  if (has_fork_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      5, this->fork_event(), output);
  }

  // optional .quipper.PerfDataProto.LostEvent lost_event = 6;
  if (has_lost_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      6, this->lost_event(), output);
  }

  // optional .quipper.PerfDataProto.ThrottleEvent throttle_event = 7;
  if (has_throttle_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7, this->throttle_event(), output);
  }

  // optional .quipper.PerfDataProto.ReadEvent read_event = 8;
  if (has_read_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      8, this->read_event(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfEvent::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional .quipper.PerfDataProto.EventHeader header = 1;
  if (has_header()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        1, this->header(), target);
  }

  // optional .quipper.PerfDataProto.MMapEvent mmap_event = 2;
  if (has_mmap_event()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        2, this->mmap_event(), target);
  }

  // optional .quipper.PerfDataProto.SampleEvent sample_event = 3;
  if (has_sample_event()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        3, this->sample_event(), target);
  }

  // optional .quipper.PerfDataProto.CommEvent comm_event = 4;
  if (has_comm_event()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        4, this->comm_event(), target);
  }

  // optional .quipper.PerfDataProto.ForkEvent fork_event = 5;
  if (has_fork_event()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        5, this->fork_event(), target);
  }

  // optional .quipper.PerfDataProto.LostEvent lost_event = 6;
  if (has_lost_event()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        6, this->lost_event(), target);
  }

  // optional .quipper.PerfDataProto.ThrottleEvent throttle_event = 7;
  if (has_throttle_event()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        7, this->throttle_event(), target);
  }

  // optional .quipper.PerfDataProto.ReadEvent read_event = 8;
  if (has_read_event()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        8, this->read_event(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .quipper.PerfDataProto.EventHeader header = 1;
    if (has_header()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->header());
    }

    // optional .quipper.PerfDataProto.MMapEvent mmap_event = 2;
    if (has_mmap_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->mmap_event());
    }

    // optional .quipper.PerfDataProto.SampleEvent sample_event = 3;
    if (has_sample_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->sample_event());
    }

    // optional .quipper.PerfDataProto.CommEvent comm_event = 4;
    if (has_comm_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->comm_event());
    }

    // optional .quipper.PerfDataProto.ForkEvent fork_event = 5;
    if (has_fork_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->fork_event());
    }

    // optional .quipper.PerfDataProto.LostEvent lost_event = 6;
    if (has_lost_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->lost_event());
    }

    // optional .quipper.PerfDataProto.ThrottleEvent throttle_event = 7;
    if (has_throttle_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->throttle_event());
    }

    // optional .quipper.PerfDataProto.ReadEvent read_event = 8;
    if (has_read_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->read_event());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfEvent::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfEvent* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfEvent*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfEvent::MergeFrom(const PerfDataProto_PerfEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_header()) {
      mutable_header()->::quipper::PerfDataProto_EventHeader::MergeFrom(from.header());
    }
    if (from.has_mmap_event()) {
      mutable_mmap_event()->::quipper::PerfDataProto_MMapEvent::MergeFrom(from.mmap_event());
    }
    if (from.has_sample_event()) {
      mutable_sample_event()->::quipper::PerfDataProto_SampleEvent::MergeFrom(from.sample_event());
    }
    if (from.has_comm_event()) {
      mutable_comm_event()->::quipper::PerfDataProto_CommEvent::MergeFrom(from.comm_event());
    }
    if (from.has_fork_event()) {
      mutable_fork_event()->::quipper::PerfDataProto_ForkEvent::MergeFrom(from.fork_event());
    }
    if (from.has_lost_event()) {
      mutable_lost_event()->::quipper::PerfDataProto_LostEvent::MergeFrom(from.lost_event());
    }
    if (from.has_throttle_event()) {
      mutable_throttle_event()->::quipper::PerfDataProto_ThrottleEvent::MergeFrom(from.throttle_event());
    }
    if (from.has_read_event()) {
      mutable_read_event()->::quipper::PerfDataProto_ReadEvent::MergeFrom(from.read_event());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfEvent::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfEvent::CopyFrom(const PerfDataProto_PerfEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfEvent::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfEvent::Swap(PerfDataProto_PerfEvent* other) {
  if (other != this) {
    std::swap(header_, other->header_);
    std::swap(mmap_event_, other->mmap_event_);
    std::swap(sample_event_, other->sample_event_);
    std::swap(comm_event_, other->comm_event_);
    std::swap(fork_event_, other->fork_event_);
    std::swap(lost_event_, other->lost_event_);
    std::swap(throttle_event_, other->throttle_event_);
    std::swap(read_event_, other->read_event_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfEvent::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfEvent_descriptor_;
  metadata.reflection = PerfDataProto_PerfEvent_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfEventStats::kNumEventsReadFieldNumber;
const int PerfDataProto_PerfEventStats::kNumSampleEventsFieldNumber;
const int PerfDataProto_PerfEventStats::kNumMmapEventsFieldNumber;
const int PerfDataProto_PerfEventStats::kNumForkEventsFieldNumber;
const int PerfDataProto_PerfEventStats::kNumExitEventsFieldNumber;
const int PerfDataProto_PerfEventStats::kNumSampleEventsMappedFieldNumber;
const int PerfDataProto_PerfEventStats::kDidRemapFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfEventStats::PerfDataProto_PerfEventStats()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfEventStats::InitAsDefaultInstance() {
}

PerfDataProto_PerfEventStats::PerfDataProto_PerfEventStats(const PerfDataProto_PerfEventStats& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfEventStats::SharedCtor() {
  _cached_size_ = 0;
  num_events_read_ = 0u;
  num_sample_events_ = 0u;
  num_mmap_events_ = 0u;
  num_fork_events_ = 0u;
  num_exit_events_ = 0u;
  num_sample_events_mapped_ = 0u;
  did_remap_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfEventStats::~PerfDataProto_PerfEventStats() {
  SharedDtor();
}

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

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

const PerfDataProto_PerfEventStats& PerfDataProto_PerfEventStats::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfEventStats* PerfDataProto_PerfEventStats::default_instance_ = NULL;

PerfDataProto_PerfEventStats* PerfDataProto_PerfEventStats::New() const {
  return new PerfDataProto_PerfEventStats;
}

void PerfDataProto_PerfEventStats::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    num_events_read_ = 0u;
    num_sample_events_ = 0u;
    num_mmap_events_ = 0u;
    num_fork_events_ = 0u;
    num_exit_events_ = 0u;
    num_sample_events_mapped_ = 0u;
    did_remap_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfEventStats::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 num_events_read = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &num_events_read_)));
          set_has_num_events_read();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_num_sample_events;
        break;
      }

      // optional uint32 num_sample_events = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_num_sample_events:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &num_sample_events_)));
          set_has_num_sample_events();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_num_mmap_events;
        break;
      }

      // optional uint32 num_mmap_events = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_num_mmap_events:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &num_mmap_events_)));
          set_has_num_mmap_events();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_num_fork_events;
        break;
      }

      // optional uint32 num_fork_events = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_num_fork_events:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &num_fork_events_)));
          set_has_num_fork_events();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_num_exit_events;
        break;
      }

      // optional uint32 num_exit_events = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_num_exit_events:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &num_exit_events_)));
          set_has_num_exit_events();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_num_sample_events_mapped;
        break;
      }

      // optional uint32 num_sample_events_mapped = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_num_sample_events_mapped:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &num_sample_events_mapped_)));
          set_has_num_sample_events_mapped();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_did_remap;
        break;
      }

      // optional bool did_remap = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_did_remap:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &did_remap_)));
          set_has_did_remap();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfEventStats::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 num_events_read = 1;
  if (has_num_events_read()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->num_events_read(), output);
  }

  // optional uint32 num_sample_events = 2;
  if (has_num_sample_events()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->num_sample_events(), output);
  }

  // optional uint32 num_mmap_events = 3;
  if (has_num_mmap_events()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->num_mmap_events(), output);
  }

  // optional uint32 num_fork_events = 4;
  if (has_num_fork_events()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->num_fork_events(), output);
  }

  // optional uint32 num_exit_events = 5;
  if (has_num_exit_events()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->num_exit_events(), output);
  }

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

  // optional bool did_remap = 7;
  if (has_did_remap()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->did_remap(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfEventStats::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 num_events_read = 1;
  if (has_num_events_read()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->num_events_read(), target);
  }

  // optional uint32 num_sample_events = 2;
  if (has_num_sample_events()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->num_sample_events(), target);
  }

  // optional uint32 num_mmap_events = 3;
  if (has_num_mmap_events()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->num_mmap_events(), target);
  }

  // optional uint32 num_fork_events = 4;
  if (has_num_fork_events()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(4, this->num_fork_events(), target);
  }

  // optional uint32 num_exit_events = 5;
  if (has_num_exit_events()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(5, this->num_exit_events(), target);
  }

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

  // optional bool did_remap = 7;
  if (has_did_remap()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->did_remap(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfEventStats::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 num_events_read = 1;
    if (has_num_events_read()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->num_events_read());
    }

    // optional uint32 num_sample_events = 2;
    if (has_num_sample_events()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->num_sample_events());
    }

    // optional uint32 num_mmap_events = 3;
    if (has_num_mmap_events()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->num_mmap_events());
    }

    // optional uint32 num_fork_events = 4;
    if (has_num_fork_events()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->num_fork_events());
    }

    // optional uint32 num_exit_events = 5;
    if (has_num_exit_events()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->num_exit_events());
    }

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

    // optional bool did_remap = 7;
    if (has_did_remap()) {
      total_size += 1 + 1;
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfEventStats::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfEventStats* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfEventStats*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfEventStats::MergeFrom(const PerfDataProto_PerfEventStats& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_num_events_read()) {
      set_num_events_read(from.num_events_read());
    }
    if (from.has_num_sample_events()) {
      set_num_sample_events(from.num_sample_events());
    }
    if (from.has_num_mmap_events()) {
      set_num_mmap_events(from.num_mmap_events());
    }
    if (from.has_num_fork_events()) {
      set_num_fork_events(from.num_fork_events());
    }
    if (from.has_num_exit_events()) {
      set_num_exit_events(from.num_exit_events());
    }
    if (from.has_num_sample_events_mapped()) {
      set_num_sample_events_mapped(from.num_sample_events_mapped());
    }
    if (from.has_did_remap()) {
      set_did_remap(from.did_remap());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfEventStats::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfEventStats::CopyFrom(const PerfDataProto_PerfEventStats& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfEventStats::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfEventStats::Swap(PerfDataProto_PerfEventStats* other) {
  if (other != this) {
    std::swap(num_events_read_, other->num_events_read_);
    std::swap(num_sample_events_, other->num_sample_events_);
    std::swap(num_mmap_events_, other->num_mmap_events_);
    std::swap(num_fork_events_, other->num_fork_events_);
    std::swap(num_exit_events_, other->num_exit_events_);
    std::swap(num_sample_events_mapped_, other->num_sample_events_mapped_);
    std::swap(did_remap_, other->did_remap_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfEventStats::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfEventStats_descriptor_;
  metadata.reflection = PerfDataProto_PerfEventStats_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfUint32Metadata::kTypeFieldNumber;
const int PerfDataProto_PerfUint32Metadata::kDataFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfUint32Metadata::PerfDataProto_PerfUint32Metadata()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfUint32Metadata::InitAsDefaultInstance() {
}

PerfDataProto_PerfUint32Metadata::PerfDataProto_PerfUint32Metadata(const PerfDataProto_PerfUint32Metadata& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfUint32Metadata::SharedCtor() {
  _cached_size_ = 0;
  type_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfUint32Metadata::~PerfDataProto_PerfUint32Metadata() {
  SharedDtor();
}

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

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

const PerfDataProto_PerfUint32Metadata& PerfDataProto_PerfUint32Metadata::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfUint32Metadata* PerfDataProto_PerfUint32Metadata::default_instance_ = NULL;

PerfDataProto_PerfUint32Metadata* PerfDataProto_PerfUint32Metadata::New() const {
  return new PerfDataProto_PerfUint32Metadata;
}

void PerfDataProto_PerfUint32Metadata::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    type_ = 0u;
  }
  data_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfUint32Metadata::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 type = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &type_)));
          set_has_type();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_data;
        break;
      }

      // repeated uint32 data = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_data:
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 1, 16, input, this->mutable_data())));
        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
                   == ::google::protobuf::internal::WireFormatLite::
                      WIRETYPE_LENGTH_DELIMITED) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, this->mutable_data())));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_data;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfUint32Metadata::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 type = 1;
  if (has_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->type(), output);
  }

  // repeated uint32 data = 2;
  for (int i = 0; i < this->data_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(
      2, this->data(i), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfUint32Metadata::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 type = 1;
  if (has_type()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->type(), target);
  }

  // repeated uint32 data = 2;
  for (int i = 0; i < this->data_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteUInt32ToArray(2, this->data(i), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfUint32Metadata::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 type = 1;
    if (has_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->type());
    }

  }
  // repeated uint32 data = 2;
  {
    int data_size = 0;
    for (int i = 0; i < this->data_size(); i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::
        UInt32Size(this->data(i));
    }
    total_size += 1 * this->data_size() + data_size;
  }

  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfUint32Metadata::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfUint32Metadata* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfUint32Metadata*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfUint32Metadata::MergeFrom(const PerfDataProto_PerfUint32Metadata& from) {
  GOOGLE_CHECK_NE(&from, this);
  data_.MergeFrom(from.data_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_type()) {
      set_type(from.type());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfUint32Metadata::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfUint32Metadata::CopyFrom(const PerfDataProto_PerfUint32Metadata& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfUint32Metadata::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfUint32Metadata::Swap(PerfDataProto_PerfUint32Metadata* other) {
  if (other != this) {
    std::swap(type_, other->type_);
    data_.Swap(&other->data_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfUint32Metadata::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfUint32Metadata_descriptor_;
  metadata.reflection = PerfDataProto_PerfUint32Metadata_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfUint64Metadata::kTypeFieldNumber;
const int PerfDataProto_PerfUint64Metadata::kDataFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfUint64Metadata::PerfDataProto_PerfUint64Metadata()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfUint64Metadata::InitAsDefaultInstance() {
}

PerfDataProto_PerfUint64Metadata::PerfDataProto_PerfUint64Metadata(const PerfDataProto_PerfUint64Metadata& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfUint64Metadata::SharedCtor() {
  _cached_size_ = 0;
  type_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfUint64Metadata::~PerfDataProto_PerfUint64Metadata() {
  SharedDtor();
}

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

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

const PerfDataProto_PerfUint64Metadata& PerfDataProto_PerfUint64Metadata::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfUint64Metadata* PerfDataProto_PerfUint64Metadata::default_instance_ = NULL;

PerfDataProto_PerfUint64Metadata* PerfDataProto_PerfUint64Metadata::New() const {
  return new PerfDataProto_PerfUint64Metadata;
}

void PerfDataProto_PerfUint64Metadata::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    type_ = 0u;
  }
  data_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfUint64Metadata::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 type = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &type_)));
          set_has_type();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_data;
        break;
      }

      // repeated uint64 data = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_data:
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 1, 16, input, this->mutable_data())));
        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
                   == ::google::protobuf::internal::WireFormatLite::
                      WIRETYPE_LENGTH_DELIMITED) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, this->mutable_data())));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_data;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfUint64Metadata::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 type = 1;
  if (has_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->type(), output);
  }

  // repeated uint64 data = 2;
  for (int i = 0; i < this->data_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
      2, this->data(i), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfUint64Metadata::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 type = 1;
  if (has_type()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->type(), target);
  }

  // repeated uint64 data = 2;
  for (int i = 0; i < this->data_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteUInt64ToArray(2, this->data(i), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfUint64Metadata::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 type = 1;
    if (has_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->type());
    }

  }
  // repeated uint64 data = 2;
  {
    int data_size = 0;
    for (int i = 0; i < this->data_size(); i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::
        UInt64Size(this->data(i));
    }
    total_size += 1 * this->data_size() + data_size;
  }

  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfUint64Metadata::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfUint64Metadata* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfUint64Metadata*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfUint64Metadata::MergeFrom(const PerfDataProto_PerfUint64Metadata& from) {
  GOOGLE_CHECK_NE(&from, this);
  data_.MergeFrom(from.data_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_type()) {
      set_type(from.type());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfUint64Metadata::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfUint64Metadata::CopyFrom(const PerfDataProto_PerfUint64Metadata& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfUint64Metadata::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfUint64Metadata::Swap(PerfDataProto_PerfUint64Metadata* other) {
  if (other != this) {
    std::swap(type_, other->type_);
    data_.Swap(&other->data_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfUint64Metadata::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfUint64Metadata_descriptor_;
  metadata.reflection = PerfDataProto_PerfUint64Metadata_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfTracingMetadata::kTracingDataFieldNumber;
const int PerfDataProto_PerfTracingMetadata::kTracingDataMd5PrefixFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfTracingMetadata::PerfDataProto_PerfTracingMetadata()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfTracingMetadata::InitAsDefaultInstance() {
}

PerfDataProto_PerfTracingMetadata::PerfDataProto_PerfTracingMetadata(const PerfDataProto_PerfTracingMetadata& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfTracingMetadata::SharedCtor() {
  _cached_size_ = 0;
  tracing_data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  tracing_data_md5_prefix_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfTracingMetadata::~PerfDataProto_PerfTracingMetadata() {
  SharedDtor();
}

void PerfDataProto_PerfTracingMetadata::SharedDtor() {
  if (tracing_data_ != &::google::protobuf::internal::kEmptyString) {
    delete tracing_data_;
  }
  if (this != default_instance_) {
  }
}

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

const PerfDataProto_PerfTracingMetadata& PerfDataProto_PerfTracingMetadata::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfTracingMetadata* PerfDataProto_PerfTracingMetadata::default_instance_ = NULL;

PerfDataProto_PerfTracingMetadata* PerfDataProto_PerfTracingMetadata::New() const {
  return new PerfDataProto_PerfTracingMetadata;
}

void PerfDataProto_PerfTracingMetadata::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_tracing_data()) {
      if (tracing_data_ != &::google::protobuf::internal::kEmptyString) {
        tracing_data_->clear();
      }
    }
    tracing_data_md5_prefix_ = GOOGLE_ULONGLONG(0);
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfTracingMetadata::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes tracing_data = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_tracing_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_tracing_data_md5_prefix;
        break;
      }

      // optional uint64 tracing_data_md5_prefix = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tracing_data_md5_prefix:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &tracing_data_md5_prefix_)));
          set_has_tracing_data_md5_prefix();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfTracingMetadata::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes tracing_data = 1;
  if (has_tracing_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->tracing_data(), output);
  }

  // optional uint64 tracing_data_md5_prefix = 2;
  if (has_tracing_data_md5_prefix()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->tracing_data_md5_prefix(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfTracingMetadata::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional bytes tracing_data = 1;
  if (has_tracing_data()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        1, this->tracing_data(), target);
  }

  // optional uint64 tracing_data_md5_prefix = 2;
  if (has_tracing_data_md5_prefix()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->tracing_data_md5_prefix(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfTracingMetadata::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes tracing_data = 1;
    if (has_tracing_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->tracing_data());
    }

    // optional uint64 tracing_data_md5_prefix = 2;
    if (has_tracing_data_md5_prefix()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->tracing_data_md5_prefix());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfTracingMetadata::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfTracingMetadata* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfTracingMetadata*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfTracingMetadata::MergeFrom(const PerfDataProto_PerfTracingMetadata& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_tracing_data()) {
      set_tracing_data(from.tracing_data());
    }
    if (from.has_tracing_data_md5_prefix()) {
      set_tracing_data_md5_prefix(from.tracing_data_md5_prefix());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfTracingMetadata::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfTracingMetadata::CopyFrom(const PerfDataProto_PerfTracingMetadata& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfTracingMetadata::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfTracingMetadata::Swap(PerfDataProto_PerfTracingMetadata* other) {
  if (other != this) {
    std::swap(tracing_data_, other->tracing_data_);
    std::swap(tracing_data_md5_prefix_, other->tracing_data_md5_prefix_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfTracingMetadata::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfTracingMetadata_descriptor_;
  metadata.reflection = PerfDataProto_PerfTracingMetadata_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfBuildID::kMiscFieldNumber;
const int PerfDataProto_PerfBuildID::kPidFieldNumber;
const int PerfDataProto_PerfBuildID::kBuildIdHashFieldNumber;
const int PerfDataProto_PerfBuildID::kFilenameFieldNumber;
const int PerfDataProto_PerfBuildID::kFilenameMd5PrefixFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfBuildID::PerfDataProto_PerfBuildID()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfBuildID::InitAsDefaultInstance() {
}

PerfDataProto_PerfBuildID::PerfDataProto_PerfBuildID(const PerfDataProto_PerfBuildID& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfBuildID::SharedCtor() {
  _cached_size_ = 0;
  misc_ = 0u;
  pid_ = 0u;
  build_id_hash_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  filename_md5_prefix_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfBuildID::~PerfDataProto_PerfBuildID() {
  SharedDtor();
}

void PerfDataProto_PerfBuildID::SharedDtor() {
  if (build_id_hash_ != &::google::protobuf::internal::kEmptyString) {
    delete build_id_hash_;
  }
  if (filename_ != &::google::protobuf::internal::kEmptyString) {
    delete filename_;
  }
  if (this != default_instance_) {
  }
}

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

const PerfDataProto_PerfBuildID& PerfDataProto_PerfBuildID::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfBuildID* PerfDataProto_PerfBuildID::default_instance_ = NULL;

PerfDataProto_PerfBuildID* PerfDataProto_PerfBuildID::New() const {
  return new PerfDataProto_PerfBuildID;
}

void PerfDataProto_PerfBuildID::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    misc_ = 0u;
    pid_ = 0u;
    if (has_build_id_hash()) {
      if (build_id_hash_ != &::google::protobuf::internal::kEmptyString) {
        build_id_hash_->clear();
      }
    }
    if (has_filename()) {
      if (filename_ != &::google::protobuf::internal::kEmptyString) {
        filename_->clear();
      }
    }
    filename_md5_prefix_ = GOOGLE_ULONGLONG(0);
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfBuildID::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 misc = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &misc_)));
          set_has_misc();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_pid;
        break;
      }

      // optional uint32 pid = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_pid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &pid_)));
          set_has_pid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_build_id_hash;
        break;
      }

      // optional bytes build_id_hash = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_build_id_hash:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_build_id_hash()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_filename;
        break;
      }

      // optional string filename = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_filename:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_filename()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->filename().data(), this->filename().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_filename_md5_prefix;
        break;
      }

      // optional uint64 filename_md5_prefix = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_filename_md5_prefix:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &filename_md5_prefix_)));
          set_has_filename_md5_prefix();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfBuildID::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 misc = 1;
  if (has_misc()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->misc(), output);
  }

  // optional uint32 pid = 2;
  if (has_pid()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->pid(), output);
  }

  // optional bytes build_id_hash = 3;
  if (has_build_id_hash()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      3, this->build_id_hash(), output);
  }

  // optional string filename = 4;
  if (has_filename()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->filename().data(), this->filename().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      4, this->filename(), output);
  }

  // optional uint64 filename_md5_prefix = 5;
  if (has_filename_md5_prefix()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(5, this->filename_md5_prefix(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfBuildID::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 misc = 1;
  if (has_misc()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->misc(), target);
  }

  // optional uint32 pid = 2;
  if (has_pid()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->pid(), target);
  }

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

  // optional string filename = 4;
  if (has_filename()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->filename().data(), this->filename().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        4, this->filename(), target);
  }

  // optional uint64 filename_md5_prefix = 5;
  if (has_filename_md5_prefix()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(5, this->filename_md5_prefix(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfBuildID::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 misc = 1;
    if (has_misc()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->misc());
    }

    // optional uint32 pid = 2;
    if (has_pid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->pid());
    }

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

    // optional string filename = 4;
    if (has_filename()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->filename());
    }

    // optional uint64 filename_md5_prefix = 5;
    if (has_filename_md5_prefix()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->filename_md5_prefix());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfBuildID::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfBuildID* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfBuildID*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfBuildID::MergeFrom(const PerfDataProto_PerfBuildID& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_misc()) {
      set_misc(from.misc());
    }
    if (from.has_pid()) {
      set_pid(from.pid());
    }
    if (from.has_build_id_hash()) {
      set_build_id_hash(from.build_id_hash());
    }
    if (from.has_filename()) {
      set_filename(from.filename());
    }
    if (from.has_filename_md5_prefix()) {
      set_filename_md5_prefix(from.filename_md5_prefix());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfBuildID::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfBuildID::CopyFrom(const PerfDataProto_PerfBuildID& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfBuildID::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfBuildID::Swap(PerfDataProto_PerfBuildID* other) {
  if (other != this) {
    std::swap(misc_, other->misc_);
    std::swap(pid_, other->pid_);
    std::swap(build_id_hash_, other->build_id_hash_);
    std::swap(filename_, other->filename_);
    std::swap(filename_md5_prefix_, other->filename_md5_prefix_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfBuildID::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfBuildID_descriptor_;
  metadata.reflection = PerfDataProto_PerfBuildID_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfCPUTopologyMetadata::kCoreSiblingsFieldNumber;
const int PerfDataProto_PerfCPUTopologyMetadata::kCoreSiblingsMd5PrefixFieldNumber;
const int PerfDataProto_PerfCPUTopologyMetadata::kThreadSiblingsFieldNumber;
const int PerfDataProto_PerfCPUTopologyMetadata::kThreadSiblingsMd5PrefixFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfCPUTopologyMetadata::PerfDataProto_PerfCPUTopologyMetadata()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfCPUTopologyMetadata::InitAsDefaultInstance() {
}

PerfDataProto_PerfCPUTopologyMetadata::PerfDataProto_PerfCPUTopologyMetadata(const PerfDataProto_PerfCPUTopologyMetadata& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

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

PerfDataProto_PerfCPUTopologyMetadata::~PerfDataProto_PerfCPUTopologyMetadata() {
  SharedDtor();
}

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

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

const PerfDataProto_PerfCPUTopologyMetadata& PerfDataProto_PerfCPUTopologyMetadata::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfCPUTopologyMetadata* PerfDataProto_PerfCPUTopologyMetadata::default_instance_ = NULL;

PerfDataProto_PerfCPUTopologyMetadata* PerfDataProto_PerfCPUTopologyMetadata::New() const {
  return new PerfDataProto_PerfCPUTopologyMetadata;
}

void PerfDataProto_PerfCPUTopologyMetadata::Clear() {
  core_siblings_.Clear();
  core_siblings_md5_prefix_.Clear();
  thread_siblings_.Clear();
  thread_siblings_md5_prefix_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfCPUTopologyMetadata::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated string core_siblings = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_core_siblings:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_core_siblings()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->core_siblings(this->core_siblings_size() - 1).data(),
            this->core_siblings(this->core_siblings_size() - 1).length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_core_siblings;
        if (input->ExpectTag(16)) goto parse_core_siblings_md5_prefix;
        break;
      }

      // repeated uint64 core_siblings_md5_prefix = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_core_siblings_md5_prefix:
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 1, 16, input, this->mutable_core_siblings_md5_prefix())));
        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
                   == ::google::protobuf::internal::WireFormatLite::
                      WIRETYPE_LENGTH_DELIMITED) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, this->mutable_core_siblings_md5_prefix())));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_core_siblings_md5_prefix;
        if (input->ExpectTag(26)) goto parse_thread_siblings;
        break;
      }

      // repeated string thread_siblings = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_thread_siblings:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_thread_siblings()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->thread_siblings(this->thread_siblings_size() - 1).data(),
            this->thread_siblings(this->thread_siblings_size() - 1).length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_thread_siblings;
        if (input->ExpectTag(32)) goto parse_thread_siblings_md5_prefix;
        break;
      }

      // repeated uint64 thread_siblings_md5_prefix = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_thread_siblings_md5_prefix:
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 1, 32, input, this->mutable_thread_siblings_md5_prefix())));
        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
                   == ::google::protobuf::internal::WireFormatLite::
                      WIRETYPE_LENGTH_DELIMITED) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, this->mutable_thread_siblings_md5_prefix())));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_thread_siblings_md5_prefix;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfCPUTopologyMetadata::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated string core_siblings = 1;
  for (int i = 0; i < this->core_siblings_size(); i++) {
  ::google::protobuf::internal::WireFormat::VerifyUTF8String(
    this->core_siblings(i).data(), this->core_siblings(i).length(),
    ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->core_siblings(i), output);
  }

  // repeated uint64 core_siblings_md5_prefix = 2;
  for (int i = 0; i < this->core_siblings_md5_prefix_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
      2, this->core_siblings_md5_prefix(i), output);
  }

  // repeated string thread_siblings = 3;
  for (int i = 0; i < this->thread_siblings_size(); i++) {
  ::google::protobuf::internal::WireFormat::VerifyUTF8String(
    this->thread_siblings(i).data(), this->thread_siblings(i).length(),
    ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      3, this->thread_siblings(i), output);
  }

  // repeated uint64 thread_siblings_md5_prefix = 4;
  for (int i = 0; i < this->thread_siblings_md5_prefix_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
      4, this->thread_siblings_md5_prefix(i), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfCPUTopologyMetadata::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // repeated string core_siblings = 1;
  for (int i = 0; i < this->core_siblings_size(); i++) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->core_siblings(i).data(), this->core_siblings(i).length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target = ::google::protobuf::internal::WireFormatLite::
      WriteStringToArray(1, this->core_siblings(i), target);
  }

  // repeated uint64 core_siblings_md5_prefix = 2;
  for (int i = 0; i < this->core_siblings_md5_prefix_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteUInt64ToArray(2, this->core_siblings_md5_prefix(i), target);
  }

  // repeated string thread_siblings = 3;
  for (int i = 0; i < this->thread_siblings_size(); i++) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->thread_siblings(i).data(), this->thread_siblings(i).length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target = ::google::protobuf::internal::WireFormatLite::
      WriteStringToArray(3, this->thread_siblings(i), target);
  }

  // repeated uint64 thread_siblings_md5_prefix = 4;
  for (int i = 0; i < this->thread_siblings_md5_prefix_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteUInt64ToArray(4, this->thread_siblings_md5_prefix(i), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfCPUTopologyMetadata::ByteSize() const {
  int total_size = 0;

  // repeated string core_siblings = 1;
  total_size += 1 * this->core_siblings_size();
  for (int i = 0; i < this->core_siblings_size(); i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->core_siblings(i));
  }

  // repeated uint64 core_siblings_md5_prefix = 2;
  {
    int data_size = 0;
    for (int i = 0; i < this->core_siblings_md5_prefix_size(); i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::
        UInt64Size(this->core_siblings_md5_prefix(i));
    }
    total_size += 1 * this->core_siblings_md5_prefix_size() + data_size;
  }

  // repeated string thread_siblings = 3;
  total_size += 1 * this->thread_siblings_size();
  for (int i = 0; i < this->thread_siblings_size(); i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->thread_siblings(i));
  }

  // repeated uint64 thread_siblings_md5_prefix = 4;
  {
    int data_size = 0;
    for (int i = 0; i < this->thread_siblings_md5_prefix_size(); i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::
        UInt64Size(this->thread_siblings_md5_prefix(i));
    }
    total_size += 1 * this->thread_siblings_md5_prefix_size() + data_size;
  }

  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfCPUTopologyMetadata::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfCPUTopologyMetadata* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfCPUTopologyMetadata*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfCPUTopologyMetadata::MergeFrom(const PerfDataProto_PerfCPUTopologyMetadata& from) {
  GOOGLE_CHECK_NE(&from, this);
  core_siblings_.MergeFrom(from.core_siblings_);
  core_siblings_md5_prefix_.MergeFrom(from.core_siblings_md5_prefix_);
  thread_siblings_.MergeFrom(from.thread_siblings_);
  thread_siblings_md5_prefix_.MergeFrom(from.thread_siblings_md5_prefix_);
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfCPUTopologyMetadata::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfCPUTopologyMetadata::CopyFrom(const PerfDataProto_PerfCPUTopologyMetadata& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfCPUTopologyMetadata::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfCPUTopologyMetadata::Swap(PerfDataProto_PerfCPUTopologyMetadata* other) {
  if (other != this) {
    core_siblings_.Swap(&other->core_siblings_);
    core_siblings_md5_prefix_.Swap(&other->core_siblings_md5_prefix_);
    thread_siblings_.Swap(&other->thread_siblings_);
    thread_siblings_md5_prefix_.Swap(&other->thread_siblings_md5_prefix_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfCPUTopologyMetadata::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfCPUTopologyMetadata_descriptor_;
  metadata.reflection = PerfDataProto_PerfCPUTopologyMetadata_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_PerfNodeTopologyMetadata::kIdFieldNumber;
const int PerfDataProto_PerfNodeTopologyMetadata::kTotalMemoryFieldNumber;
const int PerfDataProto_PerfNodeTopologyMetadata::kFreeMemoryFieldNumber;
const int PerfDataProto_PerfNodeTopologyMetadata::kCpuListFieldNumber;
const int PerfDataProto_PerfNodeTopologyMetadata::kCpuListMd5PrefixFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_PerfNodeTopologyMetadata::PerfDataProto_PerfNodeTopologyMetadata()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_PerfNodeTopologyMetadata::InitAsDefaultInstance() {
}

PerfDataProto_PerfNodeTopologyMetadata::PerfDataProto_PerfNodeTopologyMetadata(const PerfDataProto_PerfNodeTopologyMetadata& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_PerfNodeTopologyMetadata::SharedCtor() {
  _cached_size_ = 0;
  id_ = 0u;
  total_memory_ = GOOGLE_ULONGLONG(0);
  free_memory_ = GOOGLE_ULONGLONG(0);
  cpu_list_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  cpu_list_md5_prefix_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_PerfNodeTopologyMetadata::~PerfDataProto_PerfNodeTopologyMetadata() {
  SharedDtor();
}

void PerfDataProto_PerfNodeTopologyMetadata::SharedDtor() {
  if (cpu_list_ != &::google::protobuf::internal::kEmptyString) {
    delete cpu_list_;
  }
  if (this != default_instance_) {
  }
}

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

const PerfDataProto_PerfNodeTopologyMetadata& PerfDataProto_PerfNodeTopologyMetadata::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_PerfNodeTopologyMetadata* PerfDataProto_PerfNodeTopologyMetadata::default_instance_ = NULL;

PerfDataProto_PerfNodeTopologyMetadata* PerfDataProto_PerfNodeTopologyMetadata::New() const {
  return new PerfDataProto_PerfNodeTopologyMetadata;
}

void PerfDataProto_PerfNodeTopologyMetadata::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    id_ = 0u;
    total_memory_ = GOOGLE_ULONGLONG(0);
    free_memory_ = GOOGLE_ULONGLONG(0);
    if (has_cpu_list()) {
      if (cpu_list_ != &::google::protobuf::internal::kEmptyString) {
        cpu_list_->clear();
      }
    }
    cpu_list_md5_prefix_ = GOOGLE_ULONGLONG(0);
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_PerfNodeTopologyMetadata::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 id = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &id_)));
          set_has_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_total_memory;
        break;
      }

      // optional uint64 total_memory = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_total_memory:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &total_memory_)));
          set_has_total_memory();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_free_memory;
        break;
      }

      // optional uint64 free_memory = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_free_memory:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &free_memory_)));
          set_has_free_memory();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_cpu_list;
        break;
      }

      // optional string cpu_list = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_cpu_list:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_cpu_list()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->cpu_list().data(), this->cpu_list().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_cpu_list_md5_prefix;
        break;
      }

      // optional uint64 cpu_list_md5_prefix = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_cpu_list_md5_prefix:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &cpu_list_md5_prefix_)));
          set_has_cpu_list_md5_prefix();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_PerfNodeTopologyMetadata::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 id = 1;
  if (has_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->id(), output);
  }

  // optional uint64 total_memory = 2;
  if (has_total_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->total_memory(), output);
  }

  // optional uint64 free_memory = 3;
  if (has_free_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->free_memory(), output);
  }

  // optional string cpu_list = 4;
  if (has_cpu_list()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->cpu_list().data(), this->cpu_list().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      4, this->cpu_list(), output);
  }

  // optional uint64 cpu_list_md5_prefix = 5;
  if (has_cpu_list_md5_prefix()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(5, this->cpu_list_md5_prefix(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_PerfNodeTopologyMetadata::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional uint32 id = 1;
  if (has_id()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->id(), target);
  }

  // optional uint64 total_memory = 2;
  if (has_total_memory()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->total_memory(), target);
  }

  // optional uint64 free_memory = 3;
  if (has_free_memory()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->free_memory(), target);
  }

  // optional string cpu_list = 4;
  if (has_cpu_list()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->cpu_list().data(), this->cpu_list().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        4, this->cpu_list(), target);
  }

  // optional uint64 cpu_list_md5_prefix = 5;
  if (has_cpu_list_md5_prefix()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(5, this->cpu_list_md5_prefix(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_PerfNodeTopologyMetadata::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 id = 1;
    if (has_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->id());
    }

    // optional uint64 total_memory = 2;
    if (has_total_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->total_memory());
    }

    // optional uint64 free_memory = 3;
    if (has_free_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->free_memory());
    }

    // optional string cpu_list = 4;
    if (has_cpu_list()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->cpu_list());
    }

    // optional uint64 cpu_list_md5_prefix = 5;
    if (has_cpu_list_md5_prefix()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->cpu_list_md5_prefix());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_PerfNodeTopologyMetadata::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_PerfNodeTopologyMetadata* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_PerfNodeTopologyMetadata*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_PerfNodeTopologyMetadata::MergeFrom(const PerfDataProto_PerfNodeTopologyMetadata& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_id()) {
      set_id(from.id());
    }
    if (from.has_total_memory()) {
      set_total_memory(from.total_memory());
    }
    if (from.has_free_memory()) {
      set_free_memory(from.free_memory());
    }
    if (from.has_cpu_list()) {
      set_cpu_list(from.cpu_list());
    }
    if (from.has_cpu_list_md5_prefix()) {
      set_cpu_list_md5_prefix(from.cpu_list_md5_prefix());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_PerfNodeTopologyMetadata::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_PerfNodeTopologyMetadata::CopyFrom(const PerfDataProto_PerfNodeTopologyMetadata& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_PerfNodeTopologyMetadata::IsInitialized() const {

  return true;
}

void PerfDataProto_PerfNodeTopologyMetadata::Swap(PerfDataProto_PerfNodeTopologyMetadata* other) {
  if (other != this) {
    std::swap(id_, other->id_);
    std::swap(total_memory_, other->total_memory_);
    std::swap(free_memory_, other->free_memory_);
    std::swap(cpu_list_, other->cpu_list_);
    std::swap(cpu_list_md5_prefix_, other->cpu_list_md5_prefix_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_PerfNodeTopologyMetadata::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_PerfNodeTopologyMetadata_descriptor_;
  metadata.reflection = PerfDataProto_PerfNodeTopologyMetadata_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_StringMetadata_StringAndMd5sumPrefix::kValueFieldNumber;
const int PerfDataProto_StringMetadata_StringAndMd5sumPrefix::kValueMd5PrefixFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_StringMetadata_StringAndMd5sumPrefix::PerfDataProto_StringMetadata_StringAndMd5sumPrefix()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_StringMetadata_StringAndMd5sumPrefix::InitAsDefaultInstance() {
}

PerfDataProto_StringMetadata_StringAndMd5sumPrefix::PerfDataProto_StringMetadata_StringAndMd5sumPrefix(const PerfDataProto_StringMetadata_StringAndMd5sumPrefix& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_StringMetadata_StringAndMd5sumPrefix::SharedCtor() {
  _cached_size_ = 0;
  value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  value_md5_prefix_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_StringMetadata_StringAndMd5sumPrefix::~PerfDataProto_StringMetadata_StringAndMd5sumPrefix() {
  SharedDtor();
}

void PerfDataProto_StringMetadata_StringAndMd5sumPrefix::SharedDtor() {
  if (value_ != &::google::protobuf::internal::kEmptyString) {
    delete value_;
  }
  if (this != default_instance_) {
  }
}

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

const PerfDataProto_StringMetadata_StringAndMd5sumPrefix& PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_StringMetadata_StringAndMd5sumPrefix* PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance_ = NULL;

PerfDataProto_StringMetadata_StringAndMd5sumPrefix* PerfDataProto_StringMetadata_StringAndMd5sumPrefix::New() const {
  return new PerfDataProto_StringMetadata_StringAndMd5sumPrefix;
}

void PerfDataProto_StringMetadata_StringAndMd5sumPrefix::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_value()) {
      if (value_ != &::google::protobuf::internal::kEmptyString) {
        value_->clear();
      }
    }
    value_md5_prefix_ = GOOGLE_ULONGLONG(0);
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string value = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_value()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->value().data(), this->value().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_value_md5_prefix;
        break;
      }

      // optional uint64 value_md5_prefix = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_value_md5_prefix:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &value_md5_prefix_)));
          set_has_value_md5_prefix();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_StringMetadata_StringAndMd5sumPrefix::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional string value = 1;
  if (has_value()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->value().data(), this->value().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->value(), output);
  }

  // optional uint64 value_md5_prefix = 2;
  if (has_value_md5_prefix()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->value_md5_prefix(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_StringMetadata_StringAndMd5sumPrefix::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional string value = 1;
  if (has_value()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->value().data(), this->value().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->value(), target);
  }

  // optional uint64 value_md5_prefix = 2;
  if (has_value_md5_prefix()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->value_md5_prefix(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_StringMetadata_StringAndMd5sumPrefix::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional string value = 1;
    if (has_value()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->value());
    }

    // optional uint64 value_md5_prefix = 2;
    if (has_value_md5_prefix()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->value_md5_prefix());
    }

  }
  if (!unknown_fields().empty()) {
    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 PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_StringMetadata_StringAndMd5sumPrefix* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_StringMetadata_StringAndMd5sumPrefix*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergeFrom(const PerfDataProto_StringMetadata_StringAndMd5sumPrefix& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_value()) {
      set_value(from.value());
    }
    if (from.has_value_md5_prefix()) {
      set_value_md5_prefix(from.value_md5_prefix());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_StringMetadata_StringAndMd5sumPrefix::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_StringMetadata_StringAndMd5sumPrefix::CopyFrom(const PerfDataProto_StringMetadata_StringAndMd5sumPrefix& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_StringMetadata_StringAndMd5sumPrefix::IsInitialized() const {

  return true;
}

void PerfDataProto_StringMetadata_StringAndMd5sumPrefix::Swap(PerfDataProto_StringMetadata_StringAndMd5sumPrefix* other) {
  if (other != this) {
    std::swap(value_, other->value_);
    std::swap(value_md5_prefix_, other->value_md5_prefix_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_StringMetadata_StringAndMd5sumPrefix::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_StringMetadata_StringAndMd5sumPrefix_descriptor_;
  metadata.reflection = PerfDataProto_StringMetadata_StringAndMd5sumPrefix_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto_StringMetadata::kHostnameFieldNumber;
const int PerfDataProto_StringMetadata::kKernelVersionFieldNumber;
const int PerfDataProto_StringMetadata::kPerfVersionFieldNumber;
const int PerfDataProto_StringMetadata::kArchitectureFieldNumber;
const int PerfDataProto_StringMetadata::kCpuDescriptionFieldNumber;
const int PerfDataProto_StringMetadata::kCpuIdFieldNumber;
const int PerfDataProto_StringMetadata::kPerfCommandLineTokenFieldNumber;
const int PerfDataProto_StringMetadata::kPerfCommandLineWholeFieldNumber;
#endif  // !_MSC_VER

PerfDataProto_StringMetadata::PerfDataProto_StringMetadata()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto_StringMetadata::InitAsDefaultInstance() {
  hostname_ = const_cast< ::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix*>(&::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance());
  kernel_version_ = const_cast< ::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix*>(&::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance());
  perf_version_ = const_cast< ::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix*>(&::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance());
  architecture_ = const_cast< ::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix*>(&::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance());
  cpu_description_ = const_cast< ::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix*>(&::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance());
  cpu_id_ = const_cast< ::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix*>(&::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance());
  perf_command_line_whole_ = const_cast< ::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix*>(&::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::default_instance());
}

PerfDataProto_StringMetadata::PerfDataProto_StringMetadata(const PerfDataProto_StringMetadata& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto_StringMetadata::SharedCtor() {
  _cached_size_ = 0;
  hostname_ = NULL;
  kernel_version_ = NULL;
  perf_version_ = NULL;
  architecture_ = NULL;
  cpu_description_ = NULL;
  cpu_id_ = NULL;
  perf_command_line_whole_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto_StringMetadata::~PerfDataProto_StringMetadata() {
  SharedDtor();
}

void PerfDataProto_StringMetadata::SharedDtor() {
  if (this != default_instance_) {
    delete hostname_;
    delete kernel_version_;
    delete perf_version_;
    delete architecture_;
    delete cpu_description_;
    delete cpu_id_;
    delete perf_command_line_whole_;
  }
}

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

const PerfDataProto_StringMetadata& PerfDataProto_StringMetadata::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto_StringMetadata* PerfDataProto_StringMetadata::default_instance_ = NULL;

PerfDataProto_StringMetadata* PerfDataProto_StringMetadata::New() const {
  return new PerfDataProto_StringMetadata;
}

void PerfDataProto_StringMetadata::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_hostname()) {
      if (hostname_ != NULL) hostname_->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::Clear();
    }
    if (has_kernel_version()) {
      if (kernel_version_ != NULL) kernel_version_->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::Clear();
    }
    if (has_perf_version()) {
      if (perf_version_ != NULL) perf_version_->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::Clear();
    }
    if (has_architecture()) {
      if (architecture_ != NULL) architecture_->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::Clear();
    }
    if (has_cpu_description()) {
      if (cpu_description_ != NULL) cpu_description_->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::Clear();
    }
    if (has_cpu_id()) {
      if (cpu_id_ != NULL) cpu_id_->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::Clear();
    }
    if (has_perf_command_line_whole()) {
      if (perf_command_line_whole_ != NULL) perf_command_line_whole_->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::Clear();
    }
  }
  perf_command_line_token_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto_StringMetadata::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix hostname = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_hostname()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_kernel_version;
        break;
      }

      // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix kernel_version = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_kernel_version:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_kernel_version()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_perf_version;
        break;
      }

      // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_version = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_perf_version:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_perf_version()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_architecture;
        break;
      }

      // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix architecture = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_architecture:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_architecture()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_cpu_description;
        break;
      }

      // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix cpu_description = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_cpu_description:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_cpu_description()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_cpu_id;
        break;
      }

      // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix cpu_id = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_cpu_id:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_cpu_id()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_perf_command_line_token;
        break;
      }

      // repeated .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_command_line_token = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_perf_command_line_token:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_perf_command_line_token()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_perf_command_line_token;
        if (input->ExpectTag(66)) goto parse_perf_command_line_whole;
        break;
      }

      // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_command_line_whole = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_perf_command_line_whole:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_perf_command_line_whole()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto_StringMetadata::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix hostname = 1;
  if (has_hostname()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->hostname(), output);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix kernel_version = 2;
  if (has_kernel_version()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->kernel_version(), output);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_version = 3;
  if (has_perf_version()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3, this->perf_version(), output);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix architecture = 4;
  if (has_architecture()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4, this->architecture(), output);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix cpu_description = 5;
  if (has_cpu_description()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      5, this->cpu_description(), output);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix cpu_id = 6;
  if (has_cpu_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      6, this->cpu_id(), output);
  }

  // repeated .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_command_line_token = 7;
  for (int i = 0; i < this->perf_command_line_token_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7, this->perf_command_line_token(i), output);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_command_line_whole = 8;
  if (has_perf_command_line_whole()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      8, this->perf_command_line_whole(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto_StringMetadata::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix hostname = 1;
  if (has_hostname()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        1, this->hostname(), target);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix kernel_version = 2;
  if (has_kernel_version()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        2, this->kernel_version(), target);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_version = 3;
  if (has_perf_version()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        3, this->perf_version(), target);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix architecture = 4;
  if (has_architecture()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        4, this->architecture(), target);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix cpu_description = 5;
  if (has_cpu_description()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        5, this->cpu_description(), target);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix cpu_id = 6;
  if (has_cpu_id()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        6, this->cpu_id(), target);
  }

  // repeated .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_command_line_token = 7;
  for (int i = 0; i < this->perf_command_line_token_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        7, this->perf_command_line_token(i), target);
  }

  // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_command_line_whole = 8;
  if (has_perf_command_line_whole()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        8, this->perf_command_line_whole(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto_StringMetadata::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix hostname = 1;
    if (has_hostname()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->hostname());
    }

    // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix kernel_version = 2;
    if (has_kernel_version()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->kernel_version());
    }

    // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_version = 3;
    if (has_perf_version()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->perf_version());
    }

    // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix architecture = 4;
    if (has_architecture()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->architecture());
    }

    // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix cpu_description = 5;
    if (has_cpu_description()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->cpu_description());
    }

    // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix cpu_id = 6;
    if (has_cpu_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->cpu_id());
    }

    // optional .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_command_line_whole = 8;
    if (has_perf_command_line_whole()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->perf_command_line_whole());
    }

  }
  // repeated .quipper.PerfDataProto.StringMetadata.StringAndMd5sumPrefix perf_command_line_token = 7;
  total_size += 1 * this->perf_command_line_token_size();
  for (int i = 0; i < this->perf_command_line_token_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->perf_command_line_token(i));
  }

  if (!unknown_fields().empty()) {
    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 PerfDataProto_StringMetadata::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto_StringMetadata* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto_StringMetadata*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto_StringMetadata::MergeFrom(const PerfDataProto_StringMetadata& from) {
  GOOGLE_CHECK_NE(&from, this);
  perf_command_line_token_.MergeFrom(from.perf_command_line_token_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_hostname()) {
      mutable_hostname()->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergeFrom(from.hostname());
    }
    if (from.has_kernel_version()) {
      mutable_kernel_version()->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergeFrom(from.kernel_version());
    }
    if (from.has_perf_version()) {
      mutable_perf_version()->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergeFrom(from.perf_version());
    }
    if (from.has_architecture()) {
      mutable_architecture()->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergeFrom(from.architecture());
    }
    if (from.has_cpu_description()) {
      mutable_cpu_description()->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergeFrom(from.cpu_description());
    }
    if (from.has_cpu_id()) {
      mutable_cpu_id()->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergeFrom(from.cpu_id());
    }
    if (from.has_perf_command_line_whole()) {
      mutable_perf_command_line_whole()->::quipper::PerfDataProto_StringMetadata_StringAndMd5sumPrefix::MergeFrom(from.perf_command_line_whole());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto_StringMetadata::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto_StringMetadata::CopyFrom(const PerfDataProto_StringMetadata& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto_StringMetadata::IsInitialized() const {

  return true;
}

void PerfDataProto_StringMetadata::Swap(PerfDataProto_StringMetadata* other) {
  if (other != this) {
    std::swap(hostname_, other->hostname_);
    std::swap(kernel_version_, other->kernel_version_);
    std::swap(perf_version_, other->perf_version_);
    std::swap(architecture_, other->architecture_);
    std::swap(cpu_description_, other->cpu_description_);
    std::swap(cpu_id_, other->cpu_id_);
    perf_command_line_token_.Swap(&other->perf_command_line_token_);
    std::swap(perf_command_line_whole_, other->perf_command_line_whole_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto_StringMetadata::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_StringMetadata_descriptor_;
  metadata.reflection = PerfDataProto_StringMetadata_reflection_;
  return metadata;
}


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

#ifndef _MSC_VER
const int PerfDataProto::kFileAttrsFieldNumber;
const int PerfDataProto::kEventsFieldNumber;
const int PerfDataProto::kEventTypesFieldNumber;
const int PerfDataProto::kTimestampSecFieldNumber;
const int PerfDataProto::kStatsFieldNumber;
const int PerfDataProto::kMetadataMaskFieldNumber;
const int PerfDataProto::kTracingDataFieldNumber;
const int PerfDataProto::kBuildIdsFieldNumber;
const int PerfDataProto::kUint32MetadataFieldNumber;
const int PerfDataProto::kUint64MetadataFieldNumber;
const int PerfDataProto::kCpuTopologyFieldNumber;
const int PerfDataProto::kNumaTopologyFieldNumber;
const int PerfDataProto::kStringMetadataFieldNumber;
#endif  // !_MSC_VER

PerfDataProto::PerfDataProto()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void PerfDataProto::InitAsDefaultInstance() {
  stats_ = const_cast< ::quipper::PerfDataProto_PerfEventStats*>(&::quipper::PerfDataProto_PerfEventStats::default_instance());
  tracing_data_ = const_cast< ::quipper::PerfDataProto_PerfTracingMetadata*>(&::quipper::PerfDataProto_PerfTracingMetadata::default_instance());
  cpu_topology_ = const_cast< ::quipper::PerfDataProto_PerfCPUTopologyMetadata*>(&::quipper::PerfDataProto_PerfCPUTopologyMetadata::default_instance());
  string_metadata_ = const_cast< ::quipper::PerfDataProto_StringMetadata*>(&::quipper::PerfDataProto_StringMetadata::default_instance());
}

PerfDataProto::PerfDataProto(const PerfDataProto& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void PerfDataProto::SharedCtor() {
  _cached_size_ = 0;
  timestamp_sec_ = GOOGLE_ULONGLONG(0);
  stats_ = NULL;
  tracing_data_ = NULL;
  cpu_topology_ = NULL;
  string_metadata_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PerfDataProto::~PerfDataProto() {
  SharedDtor();
}

void PerfDataProto::SharedDtor() {
  if (this != default_instance_) {
    delete stats_;
    delete tracing_data_;
    delete cpu_topology_;
    delete string_metadata_;
  }
}

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

const PerfDataProto& PerfDataProto::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_perf_5fdata_2eproto();
  return *default_instance_;
}

PerfDataProto* PerfDataProto::default_instance_ = NULL;

PerfDataProto* PerfDataProto::New() const {
  return new PerfDataProto;
}

void PerfDataProto::Clear() {
  if (_has_bits_[3 / 32] & (0xffu << (3 % 32))) {
    timestamp_sec_ = GOOGLE_ULONGLONG(0);
    if (has_stats()) {
      if (stats_ != NULL) stats_->::quipper::PerfDataProto_PerfEventStats::Clear();
    }
    if (has_tracing_data()) {
      if (tracing_data_ != NULL) tracing_data_->::quipper::PerfDataProto_PerfTracingMetadata::Clear();
    }
  }
  if (_has_bits_[10 / 32] & (0xffu << (10 % 32))) {
    if (has_cpu_topology()) {
      if (cpu_topology_ != NULL) cpu_topology_->::quipper::PerfDataProto_PerfCPUTopologyMetadata::Clear();
    }
    if (has_string_metadata()) {
      if (string_metadata_ != NULL) string_metadata_->::quipper::PerfDataProto_StringMetadata::Clear();
    }
  }
  file_attrs_.Clear();
  events_.Clear();
  event_types_.Clear();
  metadata_mask_.Clear();
  build_ids_.Clear();
  uint32_metadata_.Clear();
  uint64_metadata_.Clear();
  numa_topology_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool PerfDataProto::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .quipper.PerfDataProto.PerfFileAttr file_attrs = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_file_attrs:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_file_attrs()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_file_attrs;
        if (input->ExpectTag(18)) goto parse_events;
        break;
      }

      // repeated .quipper.PerfDataProto.PerfEvent events = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_events:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_events()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_events;
        if (input->ExpectTag(24)) goto parse_timestamp_sec;
        break;
      }

      // optional uint64 timestamp_sec = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_timestamp_sec:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &timestamp_sec_)));
          set_has_timestamp_sec();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_stats;
        break;
      }

      // optional .quipper.PerfDataProto.PerfEventStats stats = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_stats:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_stats()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_metadata_mask;
        break;
      }

      // repeated uint64 metadata_mask = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_metadata_mask:
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 1, 40, input, this->mutable_metadata_mask())));
        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
                   == ::google::protobuf::internal::WireFormatLite::
                      WIRETYPE_LENGTH_DELIMITED) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, this->mutable_metadata_mask())));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_metadata_mask;
        if (input->ExpectTag(58)) goto parse_build_ids;
        break;
      }

      // repeated .quipper.PerfDataProto.PerfBuildID build_ids = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_build_ids:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_build_ids()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_build_ids;
        if (input->ExpectTag(66)) goto parse_uint32_metadata;
        break;
      }

      // repeated .quipper.PerfDataProto.PerfUint32Metadata uint32_metadata = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_uint32_metadata:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_uint32_metadata()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_uint32_metadata;
        if (input->ExpectTag(74)) goto parse_uint64_metadata;
        break;
      }

      // repeated .quipper.PerfDataProto.PerfUint64Metadata uint64_metadata = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_uint64_metadata:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_uint64_metadata()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(74)) goto parse_uint64_metadata;
        if (input->ExpectTag(82)) goto parse_event_types;
        break;
      }

      // repeated .quipper.PerfDataProto.PerfEventType event_types = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_event_types:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_event_types()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(82)) goto parse_event_types;
        if (input->ExpectTag(90)) goto parse_cpu_topology;
        break;
      }

      // optional .quipper.PerfDataProto.PerfCPUTopologyMetadata cpu_topology = 11;
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_cpu_topology:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_cpu_topology()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(98)) goto parse_numa_topology;
        break;
      }

      // repeated .quipper.PerfDataProto.PerfNodeTopologyMetadata numa_topology = 12;
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_numa_topology:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_numa_topology()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(98)) goto parse_numa_topology;
        if (input->ExpectTag(106)) goto parse_string_metadata;
        break;
      }

      // optional .quipper.PerfDataProto.StringMetadata string_metadata = 13;
      case 13: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_string_metadata:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_string_metadata()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(114)) goto parse_tracing_data;
        break;
      }

      // optional .quipper.PerfDataProto.PerfTracingMetadata tracing_data = 14;
      case 14: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_tracing_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_tracing_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PerfDataProto::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated .quipper.PerfDataProto.PerfFileAttr file_attrs = 1;
  for (int i = 0; i < this->file_attrs_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->file_attrs(i), output);
  }

  // repeated .quipper.PerfDataProto.PerfEvent events = 2;
  for (int i = 0; i < this->events_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->events(i), output);
  }

  // optional uint64 timestamp_sec = 3;
  if (has_timestamp_sec()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->timestamp_sec(), output);
  }

  // optional .quipper.PerfDataProto.PerfEventStats stats = 4;
  if (has_stats()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4, this->stats(), output);
  }

  // repeated uint64 metadata_mask = 5;
  for (int i = 0; i < this->metadata_mask_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
      5, this->metadata_mask(i), output);
  }

  // repeated .quipper.PerfDataProto.PerfBuildID build_ids = 7;
  for (int i = 0; i < this->build_ids_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7, this->build_ids(i), output);
  }

  // repeated .quipper.PerfDataProto.PerfUint32Metadata uint32_metadata = 8;
  for (int i = 0; i < this->uint32_metadata_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      8, this->uint32_metadata(i), output);
  }

  // repeated .quipper.PerfDataProto.PerfUint64Metadata uint64_metadata = 9;
  for (int i = 0; i < this->uint64_metadata_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      9, this->uint64_metadata(i), output);
  }

  // repeated .quipper.PerfDataProto.PerfEventType event_types = 10;
  for (int i = 0; i < this->event_types_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      10, this->event_types(i), output);
  }

  // optional .quipper.PerfDataProto.PerfCPUTopologyMetadata cpu_topology = 11;
  if (has_cpu_topology()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      11, this->cpu_topology(), output);
  }

  // repeated .quipper.PerfDataProto.PerfNodeTopologyMetadata numa_topology = 12;
  for (int i = 0; i < this->numa_topology_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      12, this->numa_topology(i), output);
  }

  // optional .quipper.PerfDataProto.StringMetadata string_metadata = 13;
  if (has_string_metadata()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      13, this->string_metadata(), output);
  }

  // optional .quipper.PerfDataProto.PerfTracingMetadata tracing_data = 14;
  if (has_tracing_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      14, this->tracing_data(), output);
  }

  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* PerfDataProto::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // repeated .quipper.PerfDataProto.PerfFileAttr file_attrs = 1;
  for (int i = 0; i < this->file_attrs_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        1, this->file_attrs(i), target);
  }

  // repeated .quipper.PerfDataProto.PerfEvent events = 2;
  for (int i = 0; i < this->events_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        2, this->events(i), target);
  }

  // optional uint64 timestamp_sec = 3;
  if (has_timestamp_sec()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->timestamp_sec(), target);
  }

  // optional .quipper.PerfDataProto.PerfEventStats stats = 4;
  if (has_stats()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        4, this->stats(), target);
  }

  // repeated uint64 metadata_mask = 5;
  for (int i = 0; i < this->metadata_mask_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteUInt64ToArray(5, this->metadata_mask(i), target);
  }

  // repeated .quipper.PerfDataProto.PerfBuildID build_ids = 7;
  for (int i = 0; i < this->build_ids_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        7, this->build_ids(i), target);
  }

  // repeated .quipper.PerfDataProto.PerfUint32Metadata uint32_metadata = 8;
  for (int i = 0; i < this->uint32_metadata_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        8, this->uint32_metadata(i), target);
  }

  // repeated .quipper.PerfDataProto.PerfUint64Metadata uint64_metadata = 9;
  for (int i = 0; i < this->uint64_metadata_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        9, this->uint64_metadata(i), target);
  }

  // repeated .quipper.PerfDataProto.PerfEventType event_types = 10;
  for (int i = 0; i < this->event_types_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        10, this->event_types(i), target);
  }

  // optional .quipper.PerfDataProto.PerfCPUTopologyMetadata cpu_topology = 11;
  if (has_cpu_topology()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        11, this->cpu_topology(), target);
  }

  // repeated .quipper.PerfDataProto.PerfNodeTopologyMetadata numa_topology = 12;
  for (int i = 0; i < this->numa_topology_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        12, this->numa_topology(i), target);
  }

  // optional .quipper.PerfDataProto.StringMetadata string_metadata = 13;
  if (has_string_metadata()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        13, this->string_metadata(), target);
  }

  // optional .quipper.PerfDataProto.PerfTracingMetadata tracing_data = 14;
  if (has_tracing_data()) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        14, this->tracing_data(), target);
  }

  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int PerfDataProto::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[3 / 32] & (0xffu << (3 % 32))) {
    // optional uint64 timestamp_sec = 3;
    if (has_timestamp_sec()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->timestamp_sec());
    }

    // optional .quipper.PerfDataProto.PerfEventStats stats = 4;
    if (has_stats()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->stats());
    }

    // optional .quipper.PerfDataProto.PerfTracingMetadata tracing_data = 14;
    if (has_tracing_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->tracing_data());
    }

  }
  if (_has_bits_[10 / 32] & (0xffu << (10 % 32))) {
    // optional .quipper.PerfDataProto.PerfCPUTopologyMetadata cpu_topology = 11;
    if (has_cpu_topology()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->cpu_topology());
    }

    // optional .quipper.PerfDataProto.StringMetadata string_metadata = 13;
    if (has_string_metadata()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->string_metadata());
    }

  }
  // repeated .quipper.PerfDataProto.PerfFileAttr file_attrs = 1;
  total_size += 1 * this->file_attrs_size();
  for (int i = 0; i < this->file_attrs_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->file_attrs(i));
  }

  // repeated .quipper.PerfDataProto.PerfEvent events = 2;
  total_size += 1 * this->events_size();
  for (int i = 0; i < this->events_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->events(i));
  }

  // repeated .quipper.PerfDataProto.PerfEventType event_types = 10;
  total_size += 1 * this->event_types_size();
  for (int i = 0; i < this->event_types_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->event_types(i));
  }

  // repeated uint64 metadata_mask = 5;
  {
    int data_size = 0;
    for (int i = 0; i < this->metadata_mask_size(); i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::
        UInt64Size(this->metadata_mask(i));
    }
    total_size += 1 * this->metadata_mask_size() + data_size;
  }

  // repeated .quipper.PerfDataProto.PerfBuildID build_ids = 7;
  total_size += 1 * this->build_ids_size();
  for (int i = 0; i < this->build_ids_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->build_ids(i));
  }

  // repeated .quipper.PerfDataProto.PerfUint32Metadata uint32_metadata = 8;
  total_size += 1 * this->uint32_metadata_size();
  for (int i = 0; i < this->uint32_metadata_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->uint32_metadata(i));
  }

  // repeated .quipper.PerfDataProto.PerfUint64Metadata uint64_metadata = 9;
  total_size += 1 * this->uint64_metadata_size();
  for (int i = 0; i < this->uint64_metadata_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->uint64_metadata(i));
  }

  // repeated .quipper.PerfDataProto.PerfNodeTopologyMetadata numa_topology = 12;
  total_size += 1 * this->numa_topology_size();
  for (int i = 0; i < this->numa_topology_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->numa_topology(i));
  }

  if (!unknown_fields().empty()) {
    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 PerfDataProto::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const PerfDataProto* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const PerfDataProto*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void PerfDataProto::MergeFrom(const PerfDataProto& from) {
  GOOGLE_CHECK_NE(&from, this);
  file_attrs_.MergeFrom(from.file_attrs_);
  events_.MergeFrom(from.events_);
  event_types_.MergeFrom(from.event_types_);
  metadata_mask_.MergeFrom(from.metadata_mask_);
  build_ids_.MergeFrom(from.build_ids_);
  uint32_metadata_.MergeFrom(from.uint32_metadata_);
  uint64_metadata_.MergeFrom(from.uint64_metadata_);
  numa_topology_.MergeFrom(from.numa_topology_);
  if (from._has_bits_[3 / 32] & (0xffu << (3 % 32))) {
    if (from.has_timestamp_sec()) {
      set_timestamp_sec(from.timestamp_sec());
    }
    if (from.has_stats()) {
      mutable_stats()->::quipper::PerfDataProto_PerfEventStats::MergeFrom(from.stats());
    }
    if (from.has_tracing_data()) {
      mutable_tracing_data()->::quipper::PerfDataProto_PerfTracingMetadata::MergeFrom(from.tracing_data());
    }
  }
  if (from._has_bits_[10 / 32] & (0xffu << (10 % 32))) {
    if (from.has_cpu_topology()) {
      mutable_cpu_topology()->::quipper::PerfDataProto_PerfCPUTopologyMetadata::MergeFrom(from.cpu_topology());
    }
    if (from.has_string_metadata()) {
      mutable_string_metadata()->::quipper::PerfDataProto_StringMetadata::MergeFrom(from.string_metadata());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void PerfDataProto::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void PerfDataProto::CopyFrom(const PerfDataProto& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PerfDataProto::IsInitialized() const {

  return true;
}

void PerfDataProto::Swap(PerfDataProto* other) {
  if (other != this) {
    file_attrs_.Swap(&other->file_attrs_);
    events_.Swap(&other->events_);
    event_types_.Swap(&other->event_types_);
    std::swap(timestamp_sec_, other->timestamp_sec_);
    std::swap(stats_, other->stats_);
    metadata_mask_.Swap(&other->metadata_mask_);
    std::swap(tracing_data_, other->tracing_data_);
    build_ids_.Swap(&other->build_ids_);
    uint32_metadata_.Swap(&other->uint32_metadata_);
    uint64_metadata_.Swap(&other->uint64_metadata_);
    std::swap(cpu_topology_, other->cpu_topology_);
    numa_topology_.Swap(&other->numa_topology_);
    std::swap(string_metadata_, other->string_metadata_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata PerfDataProto::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = PerfDataProto_descriptor_;
  metadata.reflection = PerfDataProto_reflection_;
  return metadata;
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace quipper

// @@protoc_insertion_point(global_scope)
