tensorflow-protos-rs 0.2.0

Protobuf codegen crate for tensorflow
Documentation
// This file is generated by rust-protobuf 2.17.0. Do not edit
// @generated

// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![allow(unused_attributes)]
#![rustfmt::skip]

#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_imports)]
#![allow(unused_results)]
//! Generated file from `tensorflow/core/profiler/tfprof_output.proto`

/// Generated files are compatible only with the same version
/// of protobuf runtime.
// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_17_0;

#[derive(PartialEq,Clone,Default)]
pub struct TFProfTensorProto {
    // message fields
    pub dtype: super::types::DataType,
    pub value_double: ::std::vec::Vec<f64>,
    pub value_int64: ::std::vec::Vec<i64>,
    pub value_str: ::protobuf::RepeatedField<::std::string::String>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a TFProfTensorProto {
    fn default() -> &'a TFProfTensorProto {
        <TFProfTensorProto as ::protobuf::Message>::default_instance()
    }
}

impl TFProfTensorProto {
    pub fn new() -> TFProfTensorProto {
        ::std::default::Default::default()
    }

    // .tensorflow.DataType dtype = 1;


    pub fn get_dtype(&self) -> super::types::DataType {
        self.dtype
    }
    pub fn clear_dtype(&mut self) {
        self.dtype = super::types::DataType::DT_INVALID;
    }

    // Param is passed by value, moved
    pub fn set_dtype(&mut self, v: super::types::DataType) {
        self.dtype = v;
    }

    // repeated double value_double = 2;


    pub fn get_value_double(&self) -> &[f64] {
        &self.value_double
    }
    pub fn clear_value_double(&mut self) {
        self.value_double.clear();
    }

    // Param is passed by value, moved
    pub fn set_value_double(&mut self, v: ::std::vec::Vec<f64>) {
        self.value_double = v;
    }

    // Mutable pointer to the field.
    pub fn mut_value_double(&mut self) -> &mut ::std::vec::Vec<f64> {
        &mut self.value_double
    }

    // Take field
    pub fn take_value_double(&mut self) -> ::std::vec::Vec<f64> {
        ::std::mem::replace(&mut self.value_double, ::std::vec::Vec::new())
    }

    // repeated int64 value_int64 = 3;


    pub fn get_value_int64(&self) -> &[i64] {
        &self.value_int64
    }
    pub fn clear_value_int64(&mut self) {
        self.value_int64.clear();
    }

    // Param is passed by value, moved
    pub fn set_value_int64(&mut self, v: ::std::vec::Vec<i64>) {
        self.value_int64 = v;
    }

    // Mutable pointer to the field.
    pub fn mut_value_int64(&mut self) -> &mut ::std::vec::Vec<i64> {
        &mut self.value_int64
    }

    // Take field
    pub fn take_value_int64(&mut self) -> ::std::vec::Vec<i64> {
        ::std::mem::replace(&mut self.value_int64, ::std::vec::Vec::new())
    }

    // repeated string value_str = 4;


    pub fn get_value_str(&self) -> &[::std::string::String] {
        &self.value_str
    }
    pub fn clear_value_str(&mut self) {
        self.value_str.clear();
    }

    // Param is passed by value, moved
    pub fn set_value_str(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
        self.value_str = v;
    }

    // Mutable pointer to the field.
    pub fn mut_value_str(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
        &mut self.value_str
    }

    // Take field
    pub fn take_value_str(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
        ::std::mem::replace(&mut self.value_str, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for TFProfTensorProto {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.dtype, 1, &mut self.unknown_fields)?
                },
                2 => {
                    ::protobuf::rt::read_repeated_double_into(wire_type, is, &mut self.value_double)?;
                },
                3 => {
                    ::protobuf::rt::read_repeated_int64_into(wire_type, is, &mut self.value_int64)?;
                },
                4 => {
                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.value_str)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if self.dtype != super::types::DataType::DT_INVALID {
            my_size += ::protobuf::rt::enum_size(1, self.dtype);
        }
        my_size += 9 * self.value_double.len() as u32;
        for value in &self.value_int64 {
            my_size += ::protobuf::rt::value_size(3, *value, ::protobuf::wire_format::WireTypeVarint);
        };
        for value in &self.value_str {
            my_size += ::protobuf::rt::string_size(4, &value);
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if self.dtype != super::types::DataType::DT_INVALID {
            os.write_enum(1, ::protobuf::ProtobufEnum::value(&self.dtype))?;
        }
        for v in &self.value_double {
            os.write_double(2, *v)?;
        };
        for v in &self.value_int64 {
            os.write_int64(3, *v)?;
        };
        for v in &self.value_str {
            os.write_string(4, &v)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> TFProfTensorProto {
        TFProfTensorProto::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<super::types::DataType>>(
                "dtype",
                |m: &TFProfTensorProto| { &m.dtype },
                |m: &mut TFProfTensorProto| { &mut m.dtype },
            ));
            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
                "value_double",
                |m: &TFProfTensorProto| { &m.value_double },
                |m: &mut TFProfTensorProto| { &mut m.value_double },
            ));
            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "value_int64",
                |m: &TFProfTensorProto| { &m.value_int64 },
                |m: &mut TFProfTensorProto| { &mut m.value_int64 },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "value_str",
                |m: &TFProfTensorProto| { &m.value_str },
                |m: &mut TFProfTensorProto| { &mut m.value_str },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<TFProfTensorProto>(
                "TFProfTensorProto",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static TFProfTensorProto {
        static instance: ::protobuf::rt::LazyV2<TFProfTensorProto> = ::protobuf::rt::LazyV2::INIT;
        instance.get(TFProfTensorProto::new)
    }
}

impl ::protobuf::Clear for TFProfTensorProto {
    fn clear(&mut self) {
        self.dtype = super::types::DataType::DT_INVALID;
        self.value_double.clear();
        self.value_int64.clear();
        self.value_str.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for TFProfTensorProto {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for TFProfTensorProto {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct GraphNodeProto {
    // message fields
    pub name: ::std::string::String,
    pub tensor_value: ::protobuf::SingularPtrField<TFProfTensorProto>,
    pub run_count: i64,
    pub exec_micros: i64,
    pub accelerator_exec_micros: i64,
    pub cpu_exec_micros: i64,
    pub requested_bytes: i64,
    pub peak_bytes: i64,
    pub residual_bytes: i64,
    pub output_bytes: i64,
    pub parameters: i64,
    pub float_ops: i64,
    pub devices: ::protobuf::RepeatedField<::std::string::String>,
    pub total_definition_count: i64,
    pub total_run_count: i64,
    pub total_exec_micros: i64,
    pub total_accelerator_exec_micros: i64,
    pub total_cpu_exec_micros: i64,
    pub total_requested_bytes: i64,
    pub total_peak_bytes: i64,
    pub total_residual_bytes: i64,
    pub total_output_bytes: i64,
    pub total_parameters: i64,
    pub total_float_ops: i64,
    pub shapes: ::protobuf::RepeatedField<super::tensor_shape::TensorShapeProto>,
    pub input_shapes: ::std::collections::HashMap<i32, super::tensor_shape::TensorShapeProto>,
    pub children: ::protobuf::RepeatedField<GraphNodeProto>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a GraphNodeProto {
    fn default() -> &'a GraphNodeProto {
        <GraphNodeProto as ::protobuf::Message>::default_instance()
    }
}

impl GraphNodeProto {
    pub fn new() -> GraphNodeProto {
        ::std::default::Default::default()
    }

    // string name = 1;


    pub fn get_name(&self) -> &str {
        &self.name
    }
    pub fn clear_name(&mut self) {
        self.name.clear();
    }

    // Param is passed by value, moved
    pub fn set_name(&mut self, v: ::std::string::String) {
        self.name = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_name(&mut self) -> &mut ::std::string::String {
        &mut self.name
    }

    // Take field
    pub fn take_name(&mut self) -> ::std::string::String {
        ::std::mem::replace(&mut self.name, ::std::string::String::new())
    }

    // .tensorflow.tfprof.TFProfTensorProto tensor_value = 15;


    pub fn get_tensor_value(&self) -> &TFProfTensorProto {
        self.tensor_value.as_ref().unwrap_or_else(|| <TFProfTensorProto as ::protobuf::Message>::default_instance())
    }
    pub fn clear_tensor_value(&mut self) {
        self.tensor_value.clear();
    }

    pub fn has_tensor_value(&self) -> bool {
        self.tensor_value.is_some()
    }

    // Param is passed by value, moved
    pub fn set_tensor_value(&mut self, v: TFProfTensorProto) {
        self.tensor_value = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_tensor_value(&mut self) -> &mut TFProfTensorProto {
        if self.tensor_value.is_none() {
            self.tensor_value.set_default();
        }
        self.tensor_value.as_mut().unwrap()
    }

    // Take field
    pub fn take_tensor_value(&mut self) -> TFProfTensorProto {
        self.tensor_value.take().unwrap_or_else(|| TFProfTensorProto::new())
    }

    // int64 run_count = 21;


    pub fn get_run_count(&self) -> i64 {
        self.run_count
    }
    pub fn clear_run_count(&mut self) {
        self.run_count = 0;
    }

    // Param is passed by value, moved
    pub fn set_run_count(&mut self, v: i64) {
        self.run_count = v;
    }

    // int64 exec_micros = 2;


    pub fn get_exec_micros(&self) -> i64 {
        self.exec_micros
    }
    pub fn clear_exec_micros(&mut self) {
        self.exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_exec_micros(&mut self, v: i64) {
        self.exec_micros = v;
    }

    // int64 accelerator_exec_micros = 17;


    pub fn get_accelerator_exec_micros(&self) -> i64 {
        self.accelerator_exec_micros
    }
    pub fn clear_accelerator_exec_micros(&mut self) {
        self.accelerator_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_accelerator_exec_micros(&mut self, v: i64) {
        self.accelerator_exec_micros = v;
    }

    // int64 cpu_exec_micros = 18;


    pub fn get_cpu_exec_micros(&self) -> i64 {
        self.cpu_exec_micros
    }
    pub fn clear_cpu_exec_micros(&mut self) {
        self.cpu_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_cpu_exec_micros(&mut self, v: i64) {
        self.cpu_exec_micros = v;
    }

    // int64 requested_bytes = 3;


    pub fn get_requested_bytes(&self) -> i64 {
        self.requested_bytes
    }
    pub fn clear_requested_bytes(&mut self) {
        self.requested_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_requested_bytes(&mut self, v: i64) {
        self.requested_bytes = v;
    }

    // int64 peak_bytes = 24;


    pub fn get_peak_bytes(&self) -> i64 {
        self.peak_bytes
    }
    pub fn clear_peak_bytes(&mut self) {
        self.peak_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_peak_bytes(&mut self, v: i64) {
        self.peak_bytes = v;
    }

    // int64 residual_bytes = 25;


    pub fn get_residual_bytes(&self) -> i64 {
        self.residual_bytes
    }
    pub fn clear_residual_bytes(&mut self) {
        self.residual_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_residual_bytes(&mut self, v: i64) {
        self.residual_bytes = v;
    }

    // int64 output_bytes = 26;


    pub fn get_output_bytes(&self) -> i64 {
        self.output_bytes
    }
    pub fn clear_output_bytes(&mut self) {
        self.output_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_output_bytes(&mut self, v: i64) {
        self.output_bytes = v;
    }

    // int64 parameters = 4;


    pub fn get_parameters(&self) -> i64 {
        self.parameters
    }
    pub fn clear_parameters(&mut self) {
        self.parameters = 0;
    }

    // Param is passed by value, moved
    pub fn set_parameters(&mut self, v: i64) {
        self.parameters = v;
    }

    // int64 float_ops = 13;


    pub fn get_float_ops(&self) -> i64 {
        self.float_ops
    }
    pub fn clear_float_ops(&mut self) {
        self.float_ops = 0;
    }

    // Param is passed by value, moved
    pub fn set_float_ops(&mut self, v: i64) {
        self.float_ops = v;
    }

    // repeated string devices = 10;


    pub fn get_devices(&self) -> &[::std::string::String] {
        &self.devices
    }
    pub fn clear_devices(&mut self) {
        self.devices.clear();
    }

    // Param is passed by value, moved
    pub fn set_devices(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
        self.devices = v;
    }

    // Mutable pointer to the field.
    pub fn mut_devices(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
        &mut self.devices
    }

    // Take field
    pub fn take_devices(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
        ::std::mem::replace(&mut self.devices, ::protobuf::RepeatedField::new())
    }

    // int64 total_definition_count = 23;


    pub fn get_total_definition_count(&self) -> i64 {
        self.total_definition_count
    }
    pub fn clear_total_definition_count(&mut self) {
        self.total_definition_count = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_definition_count(&mut self, v: i64) {
        self.total_definition_count = v;
    }

    // int64 total_run_count = 22;


    pub fn get_total_run_count(&self) -> i64 {
        self.total_run_count
    }
    pub fn clear_total_run_count(&mut self) {
        self.total_run_count = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_run_count(&mut self, v: i64) {
        self.total_run_count = v;
    }

    // int64 total_exec_micros = 6;


    pub fn get_total_exec_micros(&self) -> i64 {
        self.total_exec_micros
    }
    pub fn clear_total_exec_micros(&mut self) {
        self.total_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_exec_micros(&mut self, v: i64) {
        self.total_exec_micros = v;
    }

    // int64 total_accelerator_exec_micros = 19;


    pub fn get_total_accelerator_exec_micros(&self) -> i64 {
        self.total_accelerator_exec_micros
    }
    pub fn clear_total_accelerator_exec_micros(&mut self) {
        self.total_accelerator_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_accelerator_exec_micros(&mut self, v: i64) {
        self.total_accelerator_exec_micros = v;
    }

    // int64 total_cpu_exec_micros = 20;


    pub fn get_total_cpu_exec_micros(&self) -> i64 {
        self.total_cpu_exec_micros
    }
    pub fn clear_total_cpu_exec_micros(&mut self) {
        self.total_cpu_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_cpu_exec_micros(&mut self, v: i64) {
        self.total_cpu_exec_micros = v;
    }

    // int64 total_requested_bytes = 7;


    pub fn get_total_requested_bytes(&self) -> i64 {
        self.total_requested_bytes
    }
    pub fn clear_total_requested_bytes(&mut self) {
        self.total_requested_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_requested_bytes(&mut self, v: i64) {
        self.total_requested_bytes = v;
    }

    // int64 total_peak_bytes = 27;


    pub fn get_total_peak_bytes(&self) -> i64 {
        self.total_peak_bytes
    }
    pub fn clear_total_peak_bytes(&mut self) {
        self.total_peak_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_peak_bytes(&mut self, v: i64) {
        self.total_peak_bytes = v;
    }

    // int64 total_residual_bytes = 28;


    pub fn get_total_residual_bytes(&self) -> i64 {
        self.total_residual_bytes
    }
    pub fn clear_total_residual_bytes(&mut self) {
        self.total_residual_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_residual_bytes(&mut self, v: i64) {
        self.total_residual_bytes = v;
    }

    // int64 total_output_bytes = 29;


    pub fn get_total_output_bytes(&self) -> i64 {
        self.total_output_bytes
    }
    pub fn clear_total_output_bytes(&mut self) {
        self.total_output_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_output_bytes(&mut self, v: i64) {
        self.total_output_bytes = v;
    }

    // int64 total_parameters = 8;


    pub fn get_total_parameters(&self) -> i64 {
        self.total_parameters
    }
    pub fn clear_total_parameters(&mut self) {
        self.total_parameters = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_parameters(&mut self, v: i64) {
        self.total_parameters = v;
    }

    // int64 total_float_ops = 14;


    pub fn get_total_float_ops(&self) -> i64 {
        self.total_float_ops
    }
    pub fn clear_total_float_ops(&mut self) {
        self.total_float_ops = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_float_ops(&mut self, v: i64) {
        self.total_float_ops = v;
    }

    // repeated .tensorflow.TensorShapeProto shapes = 11;


    pub fn get_shapes(&self) -> &[super::tensor_shape::TensorShapeProto] {
        &self.shapes
    }
    pub fn clear_shapes(&mut self) {
        self.shapes.clear();
    }

    // Param is passed by value, moved
    pub fn set_shapes(&mut self, v: ::protobuf::RepeatedField<super::tensor_shape::TensorShapeProto>) {
        self.shapes = v;
    }

    // Mutable pointer to the field.
    pub fn mut_shapes(&mut self) -> &mut ::protobuf::RepeatedField<super::tensor_shape::TensorShapeProto> {
        &mut self.shapes
    }

    // Take field
    pub fn take_shapes(&mut self) -> ::protobuf::RepeatedField<super::tensor_shape::TensorShapeProto> {
        ::std::mem::replace(&mut self.shapes, ::protobuf::RepeatedField::new())
    }

    // repeated .tensorflow.tfprof.GraphNodeProto.InputShapesEntry input_shapes = 16;


    pub fn get_input_shapes(&self) -> &::std::collections::HashMap<i32, super::tensor_shape::TensorShapeProto> {
        &self.input_shapes
    }
    pub fn clear_input_shapes(&mut self) {
        self.input_shapes.clear();
    }

    // Param is passed by value, moved
    pub fn set_input_shapes(&mut self, v: ::std::collections::HashMap<i32, super::tensor_shape::TensorShapeProto>) {
        self.input_shapes = v;
    }

    // Mutable pointer to the field.
    pub fn mut_input_shapes(&mut self) -> &mut ::std::collections::HashMap<i32, super::tensor_shape::TensorShapeProto> {
        &mut self.input_shapes
    }

    // Take field
    pub fn take_input_shapes(&mut self) -> ::std::collections::HashMap<i32, super::tensor_shape::TensorShapeProto> {
        ::std::mem::replace(&mut self.input_shapes, ::std::collections::HashMap::new())
    }

    // repeated .tensorflow.tfprof.GraphNodeProto children = 12;


    pub fn get_children(&self) -> &[GraphNodeProto] {
        &self.children
    }
    pub fn clear_children(&mut self) {
        self.children.clear();
    }

    // Param is passed by value, moved
    pub fn set_children(&mut self, v: ::protobuf::RepeatedField<GraphNodeProto>) {
        self.children = v;
    }

    // Mutable pointer to the field.
    pub fn mut_children(&mut self) -> &mut ::protobuf::RepeatedField<GraphNodeProto> {
        &mut self.children
    }

    // Take field
    pub fn take_children(&mut self) -> ::protobuf::RepeatedField<GraphNodeProto> {
        ::std::mem::replace(&mut self.children, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for GraphNodeProto {
    fn is_initialized(&self) -> bool {
        for v in &self.tensor_value {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.shapes {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.children {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
                },
                15 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.tensor_value)?;
                },
                21 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.run_count = tmp;
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.exec_micros = tmp;
                },
                17 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.accelerator_exec_micros = tmp;
                },
                18 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.cpu_exec_micros = tmp;
                },
                3 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.requested_bytes = tmp;
                },
                24 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.peak_bytes = tmp;
                },
                25 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.residual_bytes = tmp;
                },
                26 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.output_bytes = tmp;
                },
                4 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.parameters = tmp;
                },
                13 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.float_ops = tmp;
                },
                10 => {
                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.devices)?;
                },
                23 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_definition_count = tmp;
                },
                22 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_run_count = tmp;
                },
                6 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_exec_micros = tmp;
                },
                19 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_accelerator_exec_micros = tmp;
                },
                20 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_cpu_exec_micros = tmp;
                },
                7 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_requested_bytes = tmp;
                },
                27 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_peak_bytes = tmp;
                },
                28 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_residual_bytes = tmp;
                },
                29 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_output_bytes = tmp;
                },
                8 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_parameters = tmp;
                },
                14 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_float_ops = tmp;
                },
                11 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.shapes)?;
                },
                16 => {
                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeInt32, ::protobuf::types::ProtobufTypeMessage<super::tensor_shape::TensorShapeProto>>(wire_type, is, &mut self.input_shapes)?;
                },
                12 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.children)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if !self.name.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.name);
        }
        if let Some(ref v) = self.tensor_value.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if self.run_count != 0 {
            my_size += ::protobuf::rt::value_size(21, self.run_count, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(2, self.exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.accelerator_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(17, self.accelerator_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.cpu_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(18, self.cpu_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.requested_bytes != 0 {
            my_size += ::protobuf::rt::value_size(3, self.requested_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.peak_bytes != 0 {
            my_size += ::protobuf::rt::value_size(24, self.peak_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.residual_bytes != 0 {
            my_size += ::protobuf::rt::value_size(25, self.residual_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.output_bytes != 0 {
            my_size += ::protobuf::rt::value_size(26, self.output_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.parameters != 0 {
            my_size += ::protobuf::rt::value_size(4, self.parameters, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.float_ops != 0 {
            my_size += ::protobuf::rt::value_size(13, self.float_ops, ::protobuf::wire_format::WireTypeVarint);
        }
        for value in &self.devices {
            my_size += ::protobuf::rt::string_size(10, &value);
        };
        if self.total_definition_count != 0 {
            my_size += ::protobuf::rt::value_size(23, self.total_definition_count, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_run_count != 0 {
            my_size += ::protobuf::rt::value_size(22, self.total_run_count, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(6, self.total_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_accelerator_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(19, self.total_accelerator_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_cpu_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(20, self.total_cpu_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_requested_bytes != 0 {
            my_size += ::protobuf::rt::value_size(7, self.total_requested_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_peak_bytes != 0 {
            my_size += ::protobuf::rt::value_size(27, self.total_peak_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_residual_bytes != 0 {
            my_size += ::protobuf::rt::value_size(28, self.total_residual_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_output_bytes != 0 {
            my_size += ::protobuf::rt::value_size(29, self.total_output_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_parameters != 0 {
            my_size += ::protobuf::rt::value_size(8, self.total_parameters, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_float_ops != 0 {
            my_size += ::protobuf::rt::value_size(14, self.total_float_ops, ::protobuf::wire_format::WireTypeVarint);
        }
        for value in &self.shapes {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeInt32, ::protobuf::types::ProtobufTypeMessage<super::tensor_shape::TensorShapeProto>>(16, &self.input_shapes);
        for value in &self.children {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if !self.name.is_empty() {
            os.write_string(1, &self.name)?;
        }
        if let Some(ref v) = self.tensor_value.as_ref() {
            os.write_tag(15, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if self.run_count != 0 {
            os.write_int64(21, self.run_count)?;
        }
        if self.exec_micros != 0 {
            os.write_int64(2, self.exec_micros)?;
        }
        if self.accelerator_exec_micros != 0 {
            os.write_int64(17, self.accelerator_exec_micros)?;
        }
        if self.cpu_exec_micros != 0 {
            os.write_int64(18, self.cpu_exec_micros)?;
        }
        if self.requested_bytes != 0 {
            os.write_int64(3, self.requested_bytes)?;
        }
        if self.peak_bytes != 0 {
            os.write_int64(24, self.peak_bytes)?;
        }
        if self.residual_bytes != 0 {
            os.write_int64(25, self.residual_bytes)?;
        }
        if self.output_bytes != 0 {
            os.write_int64(26, self.output_bytes)?;
        }
        if self.parameters != 0 {
            os.write_int64(4, self.parameters)?;
        }
        if self.float_ops != 0 {
            os.write_int64(13, self.float_ops)?;
        }
        for v in &self.devices {
            os.write_string(10, &v)?;
        };
        if self.total_definition_count != 0 {
            os.write_int64(23, self.total_definition_count)?;
        }
        if self.total_run_count != 0 {
            os.write_int64(22, self.total_run_count)?;
        }
        if self.total_exec_micros != 0 {
            os.write_int64(6, self.total_exec_micros)?;
        }
        if self.total_accelerator_exec_micros != 0 {
            os.write_int64(19, self.total_accelerator_exec_micros)?;
        }
        if self.total_cpu_exec_micros != 0 {
            os.write_int64(20, self.total_cpu_exec_micros)?;
        }
        if self.total_requested_bytes != 0 {
            os.write_int64(7, self.total_requested_bytes)?;
        }
        if self.total_peak_bytes != 0 {
            os.write_int64(27, self.total_peak_bytes)?;
        }
        if self.total_residual_bytes != 0 {
            os.write_int64(28, self.total_residual_bytes)?;
        }
        if self.total_output_bytes != 0 {
            os.write_int64(29, self.total_output_bytes)?;
        }
        if self.total_parameters != 0 {
            os.write_int64(8, self.total_parameters)?;
        }
        if self.total_float_ops != 0 {
            os.write_int64(14, self.total_float_ops)?;
        }
        for v in &self.shapes {
            os.write_tag(11, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeInt32, ::protobuf::types::ProtobufTypeMessage<super::tensor_shape::TensorShapeProto>>(16, &self.input_shapes, os)?;
        for v in &self.children {
            os.write_tag(12, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> GraphNodeProto {
        GraphNodeProto::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "name",
                |m: &GraphNodeProto| { &m.name },
                |m: &mut GraphNodeProto| { &mut m.name },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<TFProfTensorProto>>(
                "tensor_value",
                |m: &GraphNodeProto| { &m.tensor_value },
                |m: &mut GraphNodeProto| { &mut m.tensor_value },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "run_count",
                |m: &GraphNodeProto| { &m.run_count },
                |m: &mut GraphNodeProto| { &mut m.run_count },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "exec_micros",
                |m: &GraphNodeProto| { &m.exec_micros },
                |m: &mut GraphNodeProto| { &mut m.exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "accelerator_exec_micros",
                |m: &GraphNodeProto| { &m.accelerator_exec_micros },
                |m: &mut GraphNodeProto| { &mut m.accelerator_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "cpu_exec_micros",
                |m: &GraphNodeProto| { &m.cpu_exec_micros },
                |m: &mut GraphNodeProto| { &mut m.cpu_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "requested_bytes",
                |m: &GraphNodeProto| { &m.requested_bytes },
                |m: &mut GraphNodeProto| { &mut m.requested_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "peak_bytes",
                |m: &GraphNodeProto| { &m.peak_bytes },
                |m: &mut GraphNodeProto| { &mut m.peak_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "residual_bytes",
                |m: &GraphNodeProto| { &m.residual_bytes },
                |m: &mut GraphNodeProto| { &mut m.residual_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "output_bytes",
                |m: &GraphNodeProto| { &m.output_bytes },
                |m: &mut GraphNodeProto| { &mut m.output_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "parameters",
                |m: &GraphNodeProto| { &m.parameters },
                |m: &mut GraphNodeProto| { &mut m.parameters },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "float_ops",
                |m: &GraphNodeProto| { &m.float_ops },
                |m: &mut GraphNodeProto| { &mut m.float_ops },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "devices",
                |m: &GraphNodeProto| { &m.devices },
                |m: &mut GraphNodeProto| { &mut m.devices },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_definition_count",
                |m: &GraphNodeProto| { &m.total_definition_count },
                |m: &mut GraphNodeProto| { &mut m.total_definition_count },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_run_count",
                |m: &GraphNodeProto| { &m.total_run_count },
                |m: &mut GraphNodeProto| { &mut m.total_run_count },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_exec_micros",
                |m: &GraphNodeProto| { &m.total_exec_micros },
                |m: &mut GraphNodeProto| { &mut m.total_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_accelerator_exec_micros",
                |m: &GraphNodeProto| { &m.total_accelerator_exec_micros },
                |m: &mut GraphNodeProto| { &mut m.total_accelerator_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_cpu_exec_micros",
                |m: &GraphNodeProto| { &m.total_cpu_exec_micros },
                |m: &mut GraphNodeProto| { &mut m.total_cpu_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_requested_bytes",
                |m: &GraphNodeProto| { &m.total_requested_bytes },
                |m: &mut GraphNodeProto| { &mut m.total_requested_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_peak_bytes",
                |m: &GraphNodeProto| { &m.total_peak_bytes },
                |m: &mut GraphNodeProto| { &mut m.total_peak_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_residual_bytes",
                |m: &GraphNodeProto| { &m.total_residual_bytes },
                |m: &mut GraphNodeProto| { &mut m.total_residual_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_output_bytes",
                |m: &GraphNodeProto| { &m.total_output_bytes },
                |m: &mut GraphNodeProto| { &mut m.total_output_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_parameters",
                |m: &GraphNodeProto| { &m.total_parameters },
                |m: &mut GraphNodeProto| { &mut m.total_parameters },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_float_ops",
                |m: &GraphNodeProto| { &m.total_float_ops },
                |m: &mut GraphNodeProto| { &mut m.total_float_ops },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::tensor_shape::TensorShapeProto>>(
                "shapes",
                |m: &GraphNodeProto| { &m.shapes },
                |m: &mut GraphNodeProto| { &mut m.shapes },
            ));
            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeInt32, ::protobuf::types::ProtobufTypeMessage<super::tensor_shape::TensorShapeProto>>(
                "input_shapes",
                |m: &GraphNodeProto| { &m.input_shapes },
                |m: &mut GraphNodeProto| { &mut m.input_shapes },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<GraphNodeProto>>(
                "children",
                |m: &GraphNodeProto| { &m.children },
                |m: &mut GraphNodeProto| { &mut m.children },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<GraphNodeProto>(
                "GraphNodeProto",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static GraphNodeProto {
        static instance: ::protobuf::rt::LazyV2<GraphNodeProto> = ::protobuf::rt::LazyV2::INIT;
        instance.get(GraphNodeProto::new)
    }
}

impl ::protobuf::Clear for GraphNodeProto {
    fn clear(&mut self) {
        self.name.clear();
        self.tensor_value.clear();
        self.run_count = 0;
        self.exec_micros = 0;
        self.accelerator_exec_micros = 0;
        self.cpu_exec_micros = 0;
        self.requested_bytes = 0;
        self.peak_bytes = 0;
        self.residual_bytes = 0;
        self.output_bytes = 0;
        self.parameters = 0;
        self.float_ops = 0;
        self.devices.clear();
        self.total_definition_count = 0;
        self.total_run_count = 0;
        self.total_exec_micros = 0;
        self.total_accelerator_exec_micros = 0;
        self.total_cpu_exec_micros = 0;
        self.total_requested_bytes = 0;
        self.total_peak_bytes = 0;
        self.total_residual_bytes = 0;
        self.total_output_bytes = 0;
        self.total_parameters = 0;
        self.total_float_ops = 0;
        self.shapes.clear();
        self.input_shapes.clear();
        self.children.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for GraphNodeProto {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for GraphNodeProto {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct MultiGraphNodeProto {
    // message fields
    pub name: ::std::string::String,
    pub exec_micros: i64,
    pub accelerator_exec_micros: i64,
    pub cpu_exec_micros: i64,
    pub requested_bytes: i64,
    pub peak_bytes: i64,
    pub residual_bytes: i64,
    pub output_bytes: i64,
    pub parameters: i64,
    pub float_ops: i64,
    pub total_exec_micros: i64,
    pub total_accelerator_exec_micros: i64,
    pub total_cpu_exec_micros: i64,
    pub total_requested_bytes: i64,
    pub total_peak_bytes: i64,
    pub total_residual_bytes: i64,
    pub total_output_bytes: i64,
    pub total_parameters: i64,
    pub total_float_ops: i64,
    pub graph_nodes: ::protobuf::RepeatedField<GraphNodeProto>,
    pub children: ::protobuf::RepeatedField<MultiGraphNodeProto>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a MultiGraphNodeProto {
    fn default() -> &'a MultiGraphNodeProto {
        <MultiGraphNodeProto as ::protobuf::Message>::default_instance()
    }
}

impl MultiGraphNodeProto {
    pub fn new() -> MultiGraphNodeProto {
        ::std::default::Default::default()
    }

    // string name = 1;


    pub fn get_name(&self) -> &str {
        &self.name
    }
    pub fn clear_name(&mut self) {
        self.name.clear();
    }

    // Param is passed by value, moved
    pub fn set_name(&mut self, v: ::std::string::String) {
        self.name = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_name(&mut self) -> &mut ::std::string::String {
        &mut self.name
    }

    // Take field
    pub fn take_name(&mut self) -> ::std::string::String {
        ::std::mem::replace(&mut self.name, ::std::string::String::new())
    }

    // int64 exec_micros = 2;


    pub fn get_exec_micros(&self) -> i64 {
        self.exec_micros
    }
    pub fn clear_exec_micros(&mut self) {
        self.exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_exec_micros(&mut self, v: i64) {
        self.exec_micros = v;
    }

    // int64 accelerator_exec_micros = 12;


    pub fn get_accelerator_exec_micros(&self) -> i64 {
        self.accelerator_exec_micros
    }
    pub fn clear_accelerator_exec_micros(&mut self) {
        self.accelerator_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_accelerator_exec_micros(&mut self, v: i64) {
        self.accelerator_exec_micros = v;
    }

    // int64 cpu_exec_micros = 13;


    pub fn get_cpu_exec_micros(&self) -> i64 {
        self.cpu_exec_micros
    }
    pub fn clear_cpu_exec_micros(&mut self) {
        self.cpu_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_cpu_exec_micros(&mut self, v: i64) {
        self.cpu_exec_micros = v;
    }

    // int64 requested_bytes = 3;


    pub fn get_requested_bytes(&self) -> i64 {
        self.requested_bytes
    }
    pub fn clear_requested_bytes(&mut self) {
        self.requested_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_requested_bytes(&mut self, v: i64) {
        self.requested_bytes = v;
    }

    // int64 peak_bytes = 16;


    pub fn get_peak_bytes(&self) -> i64 {
        self.peak_bytes
    }
    pub fn clear_peak_bytes(&mut self) {
        self.peak_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_peak_bytes(&mut self, v: i64) {
        self.peak_bytes = v;
    }

    // int64 residual_bytes = 17;


    pub fn get_residual_bytes(&self) -> i64 {
        self.residual_bytes
    }
    pub fn clear_residual_bytes(&mut self) {
        self.residual_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_residual_bytes(&mut self, v: i64) {
        self.residual_bytes = v;
    }

    // int64 output_bytes = 18;


    pub fn get_output_bytes(&self) -> i64 {
        self.output_bytes
    }
    pub fn clear_output_bytes(&mut self) {
        self.output_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_output_bytes(&mut self, v: i64) {
        self.output_bytes = v;
    }

    // int64 parameters = 4;


    pub fn get_parameters(&self) -> i64 {
        self.parameters
    }
    pub fn clear_parameters(&mut self) {
        self.parameters = 0;
    }

    // Param is passed by value, moved
    pub fn set_parameters(&mut self, v: i64) {
        self.parameters = v;
    }

    // int64 float_ops = 5;


    pub fn get_float_ops(&self) -> i64 {
        self.float_ops
    }
    pub fn clear_float_ops(&mut self) {
        self.float_ops = 0;
    }

    // Param is passed by value, moved
    pub fn set_float_ops(&mut self, v: i64) {
        self.float_ops = v;
    }

    // int64 total_exec_micros = 6;


    pub fn get_total_exec_micros(&self) -> i64 {
        self.total_exec_micros
    }
    pub fn clear_total_exec_micros(&mut self) {
        self.total_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_exec_micros(&mut self, v: i64) {
        self.total_exec_micros = v;
    }

    // int64 total_accelerator_exec_micros = 14;


    pub fn get_total_accelerator_exec_micros(&self) -> i64 {
        self.total_accelerator_exec_micros
    }
    pub fn clear_total_accelerator_exec_micros(&mut self) {
        self.total_accelerator_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_accelerator_exec_micros(&mut self, v: i64) {
        self.total_accelerator_exec_micros = v;
    }

    // int64 total_cpu_exec_micros = 15;


    pub fn get_total_cpu_exec_micros(&self) -> i64 {
        self.total_cpu_exec_micros
    }
    pub fn clear_total_cpu_exec_micros(&mut self) {
        self.total_cpu_exec_micros = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_cpu_exec_micros(&mut self, v: i64) {
        self.total_cpu_exec_micros = v;
    }

    // int64 total_requested_bytes = 7;


    pub fn get_total_requested_bytes(&self) -> i64 {
        self.total_requested_bytes
    }
    pub fn clear_total_requested_bytes(&mut self) {
        self.total_requested_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_requested_bytes(&mut self, v: i64) {
        self.total_requested_bytes = v;
    }

    // int64 total_peak_bytes = 19;


    pub fn get_total_peak_bytes(&self) -> i64 {
        self.total_peak_bytes
    }
    pub fn clear_total_peak_bytes(&mut self) {
        self.total_peak_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_peak_bytes(&mut self, v: i64) {
        self.total_peak_bytes = v;
    }

    // int64 total_residual_bytes = 20;


    pub fn get_total_residual_bytes(&self) -> i64 {
        self.total_residual_bytes
    }
    pub fn clear_total_residual_bytes(&mut self) {
        self.total_residual_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_residual_bytes(&mut self, v: i64) {
        self.total_residual_bytes = v;
    }

    // int64 total_output_bytes = 21;


    pub fn get_total_output_bytes(&self) -> i64 {
        self.total_output_bytes
    }
    pub fn clear_total_output_bytes(&mut self) {
        self.total_output_bytes = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_output_bytes(&mut self, v: i64) {
        self.total_output_bytes = v;
    }

    // int64 total_parameters = 8;


    pub fn get_total_parameters(&self) -> i64 {
        self.total_parameters
    }
    pub fn clear_total_parameters(&mut self) {
        self.total_parameters = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_parameters(&mut self, v: i64) {
        self.total_parameters = v;
    }

    // int64 total_float_ops = 9;


    pub fn get_total_float_ops(&self) -> i64 {
        self.total_float_ops
    }
    pub fn clear_total_float_ops(&mut self) {
        self.total_float_ops = 0;
    }

    // Param is passed by value, moved
    pub fn set_total_float_ops(&mut self, v: i64) {
        self.total_float_ops = v;
    }

    // repeated .tensorflow.tfprof.GraphNodeProto graph_nodes = 10;


    pub fn get_graph_nodes(&self) -> &[GraphNodeProto] {
        &self.graph_nodes
    }
    pub fn clear_graph_nodes(&mut self) {
        self.graph_nodes.clear();
    }

    // Param is passed by value, moved
    pub fn set_graph_nodes(&mut self, v: ::protobuf::RepeatedField<GraphNodeProto>) {
        self.graph_nodes = v;
    }

    // Mutable pointer to the field.
    pub fn mut_graph_nodes(&mut self) -> &mut ::protobuf::RepeatedField<GraphNodeProto> {
        &mut self.graph_nodes
    }

    // Take field
    pub fn take_graph_nodes(&mut self) -> ::protobuf::RepeatedField<GraphNodeProto> {
        ::std::mem::replace(&mut self.graph_nodes, ::protobuf::RepeatedField::new())
    }

    // repeated .tensorflow.tfprof.MultiGraphNodeProto children = 11;


    pub fn get_children(&self) -> &[MultiGraphNodeProto] {
        &self.children
    }
    pub fn clear_children(&mut self) {
        self.children.clear();
    }

    // Param is passed by value, moved
    pub fn set_children(&mut self, v: ::protobuf::RepeatedField<MultiGraphNodeProto>) {
        self.children = v;
    }

    // Mutable pointer to the field.
    pub fn mut_children(&mut self) -> &mut ::protobuf::RepeatedField<MultiGraphNodeProto> {
        &mut self.children
    }

    // Take field
    pub fn take_children(&mut self) -> ::protobuf::RepeatedField<MultiGraphNodeProto> {
        ::std::mem::replace(&mut self.children, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for MultiGraphNodeProto {
    fn is_initialized(&self) -> bool {
        for v in &self.graph_nodes {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.children {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.exec_micros = tmp;
                },
                12 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.accelerator_exec_micros = tmp;
                },
                13 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.cpu_exec_micros = tmp;
                },
                3 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.requested_bytes = tmp;
                },
                16 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.peak_bytes = tmp;
                },
                17 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.residual_bytes = tmp;
                },
                18 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.output_bytes = tmp;
                },
                4 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.parameters = tmp;
                },
                5 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.float_ops = tmp;
                },
                6 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_exec_micros = tmp;
                },
                14 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_accelerator_exec_micros = tmp;
                },
                15 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_cpu_exec_micros = tmp;
                },
                7 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_requested_bytes = tmp;
                },
                19 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_peak_bytes = tmp;
                },
                20 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_residual_bytes = tmp;
                },
                21 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_output_bytes = tmp;
                },
                8 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_parameters = tmp;
                },
                9 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.total_float_ops = tmp;
                },
                10 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.graph_nodes)?;
                },
                11 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.children)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if !self.name.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.name);
        }
        if self.exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(2, self.exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.accelerator_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(12, self.accelerator_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.cpu_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(13, self.cpu_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.requested_bytes != 0 {
            my_size += ::protobuf::rt::value_size(3, self.requested_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.peak_bytes != 0 {
            my_size += ::protobuf::rt::value_size(16, self.peak_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.residual_bytes != 0 {
            my_size += ::protobuf::rt::value_size(17, self.residual_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.output_bytes != 0 {
            my_size += ::protobuf::rt::value_size(18, self.output_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.parameters != 0 {
            my_size += ::protobuf::rt::value_size(4, self.parameters, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.float_ops != 0 {
            my_size += ::protobuf::rt::value_size(5, self.float_ops, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(6, self.total_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_accelerator_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(14, self.total_accelerator_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_cpu_exec_micros != 0 {
            my_size += ::protobuf::rt::value_size(15, self.total_cpu_exec_micros, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_requested_bytes != 0 {
            my_size += ::protobuf::rt::value_size(7, self.total_requested_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_peak_bytes != 0 {
            my_size += ::protobuf::rt::value_size(19, self.total_peak_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_residual_bytes != 0 {
            my_size += ::protobuf::rt::value_size(20, self.total_residual_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_output_bytes != 0 {
            my_size += ::protobuf::rt::value_size(21, self.total_output_bytes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_parameters != 0 {
            my_size += ::protobuf::rt::value_size(8, self.total_parameters, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.total_float_ops != 0 {
            my_size += ::protobuf::rt::value_size(9, self.total_float_ops, ::protobuf::wire_format::WireTypeVarint);
        }
        for value in &self.graph_nodes {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        for value in &self.children {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if !self.name.is_empty() {
            os.write_string(1, &self.name)?;
        }
        if self.exec_micros != 0 {
            os.write_int64(2, self.exec_micros)?;
        }
        if self.accelerator_exec_micros != 0 {
            os.write_int64(12, self.accelerator_exec_micros)?;
        }
        if self.cpu_exec_micros != 0 {
            os.write_int64(13, self.cpu_exec_micros)?;
        }
        if self.requested_bytes != 0 {
            os.write_int64(3, self.requested_bytes)?;
        }
        if self.peak_bytes != 0 {
            os.write_int64(16, self.peak_bytes)?;
        }
        if self.residual_bytes != 0 {
            os.write_int64(17, self.residual_bytes)?;
        }
        if self.output_bytes != 0 {
            os.write_int64(18, self.output_bytes)?;
        }
        if self.parameters != 0 {
            os.write_int64(4, self.parameters)?;
        }
        if self.float_ops != 0 {
            os.write_int64(5, self.float_ops)?;
        }
        if self.total_exec_micros != 0 {
            os.write_int64(6, self.total_exec_micros)?;
        }
        if self.total_accelerator_exec_micros != 0 {
            os.write_int64(14, self.total_accelerator_exec_micros)?;
        }
        if self.total_cpu_exec_micros != 0 {
            os.write_int64(15, self.total_cpu_exec_micros)?;
        }
        if self.total_requested_bytes != 0 {
            os.write_int64(7, self.total_requested_bytes)?;
        }
        if self.total_peak_bytes != 0 {
            os.write_int64(19, self.total_peak_bytes)?;
        }
        if self.total_residual_bytes != 0 {
            os.write_int64(20, self.total_residual_bytes)?;
        }
        if self.total_output_bytes != 0 {
            os.write_int64(21, self.total_output_bytes)?;
        }
        if self.total_parameters != 0 {
            os.write_int64(8, self.total_parameters)?;
        }
        if self.total_float_ops != 0 {
            os.write_int64(9, self.total_float_ops)?;
        }
        for v in &self.graph_nodes {
            os.write_tag(10, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        for v in &self.children {
            os.write_tag(11, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> MultiGraphNodeProto {
        MultiGraphNodeProto::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "name",
                |m: &MultiGraphNodeProto| { &m.name },
                |m: &mut MultiGraphNodeProto| { &mut m.name },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "exec_micros",
                |m: &MultiGraphNodeProto| { &m.exec_micros },
                |m: &mut MultiGraphNodeProto| { &mut m.exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "accelerator_exec_micros",
                |m: &MultiGraphNodeProto| { &m.accelerator_exec_micros },
                |m: &mut MultiGraphNodeProto| { &mut m.accelerator_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "cpu_exec_micros",
                |m: &MultiGraphNodeProto| { &m.cpu_exec_micros },
                |m: &mut MultiGraphNodeProto| { &mut m.cpu_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "requested_bytes",
                |m: &MultiGraphNodeProto| { &m.requested_bytes },
                |m: &mut MultiGraphNodeProto| { &mut m.requested_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "peak_bytes",
                |m: &MultiGraphNodeProto| { &m.peak_bytes },
                |m: &mut MultiGraphNodeProto| { &mut m.peak_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "residual_bytes",
                |m: &MultiGraphNodeProto| { &m.residual_bytes },
                |m: &mut MultiGraphNodeProto| { &mut m.residual_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "output_bytes",
                |m: &MultiGraphNodeProto| { &m.output_bytes },
                |m: &mut MultiGraphNodeProto| { &mut m.output_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "parameters",
                |m: &MultiGraphNodeProto| { &m.parameters },
                |m: &mut MultiGraphNodeProto| { &mut m.parameters },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "float_ops",
                |m: &MultiGraphNodeProto| { &m.float_ops },
                |m: &mut MultiGraphNodeProto| { &mut m.float_ops },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_exec_micros",
                |m: &MultiGraphNodeProto| { &m.total_exec_micros },
                |m: &mut MultiGraphNodeProto| { &mut m.total_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_accelerator_exec_micros",
                |m: &MultiGraphNodeProto| { &m.total_accelerator_exec_micros },
                |m: &mut MultiGraphNodeProto| { &mut m.total_accelerator_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_cpu_exec_micros",
                |m: &MultiGraphNodeProto| { &m.total_cpu_exec_micros },
                |m: &mut MultiGraphNodeProto| { &mut m.total_cpu_exec_micros },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_requested_bytes",
                |m: &MultiGraphNodeProto| { &m.total_requested_bytes },
                |m: &mut MultiGraphNodeProto| { &mut m.total_requested_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_peak_bytes",
                |m: &MultiGraphNodeProto| { &m.total_peak_bytes },
                |m: &mut MultiGraphNodeProto| { &mut m.total_peak_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_residual_bytes",
                |m: &MultiGraphNodeProto| { &m.total_residual_bytes },
                |m: &mut MultiGraphNodeProto| { &mut m.total_residual_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_output_bytes",
                |m: &MultiGraphNodeProto| { &m.total_output_bytes },
                |m: &mut MultiGraphNodeProto| { &mut m.total_output_bytes },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_parameters",
                |m: &MultiGraphNodeProto| { &m.total_parameters },
                |m: &mut MultiGraphNodeProto| { &mut m.total_parameters },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                "total_float_ops",
                |m: &MultiGraphNodeProto| { &m.total_float_ops },
                |m: &mut MultiGraphNodeProto| { &mut m.total_float_ops },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<GraphNodeProto>>(
                "graph_nodes",
                |m: &MultiGraphNodeProto| { &m.graph_nodes },
                |m: &mut MultiGraphNodeProto| { &mut m.graph_nodes },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MultiGraphNodeProto>>(
                "children",
                |m: &MultiGraphNodeProto| { &m.children },
                |m: &mut MultiGraphNodeProto| { &mut m.children },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<MultiGraphNodeProto>(
                "MultiGraphNodeProto",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static MultiGraphNodeProto {
        static instance: ::protobuf::rt::LazyV2<MultiGraphNodeProto> = ::protobuf::rt::LazyV2::INIT;
        instance.get(MultiGraphNodeProto::new)
    }
}

impl ::protobuf::Clear for MultiGraphNodeProto {
    fn clear(&mut self) {
        self.name.clear();
        self.exec_micros = 0;
        self.accelerator_exec_micros = 0;
        self.cpu_exec_micros = 0;
        self.requested_bytes = 0;
        self.peak_bytes = 0;
        self.residual_bytes = 0;
        self.output_bytes = 0;
        self.parameters = 0;
        self.float_ops = 0;
        self.total_exec_micros = 0;
        self.total_accelerator_exec_micros = 0;
        self.total_cpu_exec_micros = 0;
        self.total_requested_bytes = 0;
        self.total_peak_bytes = 0;
        self.total_residual_bytes = 0;
        self.total_output_bytes = 0;
        self.total_parameters = 0;
        self.total_float_ops = 0;
        self.graph_nodes.clear();
        self.children.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for MultiGraphNodeProto {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for MultiGraphNodeProto {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct AdviceProto {
    // message fields
    pub checkers: ::std::collections::HashMap<::std::string::String, AdviceProto_Checker>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a AdviceProto {
    fn default() -> &'a AdviceProto {
        <AdviceProto as ::protobuf::Message>::default_instance()
    }
}

impl AdviceProto {
    pub fn new() -> AdviceProto {
        ::std::default::Default::default()
    }

    // repeated .tensorflow.tfprof.AdviceProto.CheckersEntry checkers = 1;


    pub fn get_checkers(&self) -> &::std::collections::HashMap<::std::string::String, AdviceProto_Checker> {
        &self.checkers
    }
    pub fn clear_checkers(&mut self) {
        self.checkers.clear();
    }

    // Param is passed by value, moved
    pub fn set_checkers(&mut self, v: ::std::collections::HashMap<::std::string::String, AdviceProto_Checker>) {
        self.checkers = v;
    }

    // Mutable pointer to the field.
    pub fn mut_checkers(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, AdviceProto_Checker> {
        &mut self.checkers
    }

    // Take field
    pub fn take_checkers(&mut self) -> ::std::collections::HashMap<::std::string::String, AdviceProto_Checker> {
        ::std::mem::replace(&mut self.checkers, ::std::collections::HashMap::new())
    }
}

impl ::protobuf::Message for AdviceProto {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<AdviceProto_Checker>>(wire_type, is, &mut self.checkers)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<AdviceProto_Checker>>(1, &self.checkers);
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<AdviceProto_Checker>>(1, &self.checkers, os)?;
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> AdviceProto {
        AdviceProto::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<AdviceProto_Checker>>(
                "checkers",
                |m: &AdviceProto| { &m.checkers },
                |m: &mut AdviceProto| { &mut m.checkers },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<AdviceProto>(
                "AdviceProto",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static AdviceProto {
        static instance: ::protobuf::rt::LazyV2<AdviceProto> = ::protobuf::rt::LazyV2::INIT;
        instance.get(AdviceProto::new)
    }
}

impl ::protobuf::Clear for AdviceProto {
    fn clear(&mut self) {
        self.checkers.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for AdviceProto {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for AdviceProto {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct AdviceProto_Checker {
    // message fields
    pub reports: ::protobuf::RepeatedField<::std::string::String>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a AdviceProto_Checker {
    fn default() -> &'a AdviceProto_Checker {
        <AdviceProto_Checker as ::protobuf::Message>::default_instance()
    }
}

impl AdviceProto_Checker {
    pub fn new() -> AdviceProto_Checker {
        ::std::default::Default::default()
    }

    // repeated string reports = 2;


    pub fn get_reports(&self) -> &[::std::string::String] {
        &self.reports
    }
    pub fn clear_reports(&mut self) {
        self.reports.clear();
    }

    // Param is passed by value, moved
    pub fn set_reports(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
        self.reports = v;
    }

    // Mutable pointer to the field.
    pub fn mut_reports(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
        &mut self.reports
    }

    // Take field
    pub fn take_reports(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
        ::std::mem::replace(&mut self.reports, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for AdviceProto_Checker {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                2 => {
                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.reports)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        for value in &self.reports {
            my_size += ::protobuf::rt::string_size(2, &value);
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        for v in &self.reports {
            os.write_string(2, &v)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> AdviceProto_Checker {
        AdviceProto_Checker::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "reports",
                |m: &AdviceProto_Checker| { &m.reports },
                |m: &mut AdviceProto_Checker| { &mut m.reports },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<AdviceProto_Checker>(
                "AdviceProto.Checker",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static AdviceProto_Checker {
        static instance: ::protobuf::rt::LazyV2<AdviceProto_Checker> = ::protobuf::rt::LazyV2::INIT;
        instance.get(AdviceProto_Checker::new)
    }
}

impl ::protobuf::Clear for AdviceProto_Checker {
    fn clear(&mut self) {
        self.reports.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for AdviceProto_Checker {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for AdviceProto_Checker {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n,tensorflow/core/profiler/tfprof_output.proto\x12\x11tensorflow.tfprof\
    \x1a,tensorflow/core/framework/tensor_shape.proto\x1a%tensorflow/core/fr\
    amework/types.proto\"\xa0\x01\n\x11TFProfTensorProto\x12*\n\x05dtype\x18\
    \x01\x20\x01(\x0e2\x14.tensorflow.DataTypeR\x05dtype\x12!\n\x0cvalue_dou\
    ble\x18\x02\x20\x03(\x01R\x0bvalueDouble\x12\x1f\n\x0bvalue_int64\x18\
    \x03\x20\x03(\x03R\nvalueInt64\x12\x1b\n\tvalue_str\x18\x04\x20\x03(\tR\
    \x08valueStr\"\xaf\n\n\x0eGraphNodeProto\x12\x12\n\x04name\x18\x01\x20\
    \x01(\tR\x04name\x12G\n\x0ctensor_value\x18\x0f\x20\x01(\x0b2$.tensorflo\
    w.tfprof.TFProfTensorProtoR\x0btensorValue\x12\x1b\n\trun_count\x18\x15\
    \x20\x01(\x03R\x08runCount\x12\x1f\n\x0bexec_micros\x18\x02\x20\x01(\x03\
    R\nexecMicros\x126\n\x17accelerator_exec_micros\x18\x11\x20\x01(\x03R\
    \x15acceleratorExecMicros\x12&\n\x0fcpu_exec_micros\x18\x12\x20\x01(\x03\
    R\rcpuExecMicros\x12'\n\x0frequested_bytes\x18\x03\x20\x01(\x03R\x0erequ\
    estedBytes\x12\x1d\n\npeak_bytes\x18\x18\x20\x01(\x03R\tpeakBytes\x12%\n\
    \x0eresidual_bytes\x18\x19\x20\x01(\x03R\rresidualBytes\x12!\n\x0coutput\
    _bytes\x18\x1a\x20\x01(\x03R\x0boutputBytes\x12\x1e\n\nparameters\x18\
    \x04\x20\x01(\x03R\nparameters\x12\x1b\n\tfloat_ops\x18\r\x20\x01(\x03R\
    \x08floatOps\x12\x18\n\x07devices\x18\n\x20\x03(\tR\x07devices\x124\n\
    \x16total_definition_count\x18\x17\x20\x01(\x03R\x14totalDefinitionCount\
    \x12&\n\x0ftotal_run_count\x18\x16\x20\x01(\x03R\rtotalRunCount\x12*\n\
    \x11total_exec_micros\x18\x06\x20\x01(\x03R\x0ftotalExecMicros\x12A\n\
    \x1dtotal_accelerator_exec_micros\x18\x13\x20\x01(\x03R\x1atotalAccelera\
    torExecMicros\x121\n\x15total_cpu_exec_micros\x18\x14\x20\x01(\x03R\x12t\
    otalCpuExecMicros\x122\n\x15total_requested_bytes\x18\x07\x20\x01(\x03R\
    \x13totalRequestedBytes\x12(\n\x10total_peak_bytes\x18\x1b\x20\x01(\x03R\
    \x0etotalPeakBytes\x120\n\x14total_residual_bytes\x18\x1c\x20\x01(\x03R\
    \x12totalResidualBytes\x12,\n\x12total_output_bytes\x18\x1d\x20\x01(\x03\
    R\x10totalOutputBytes\x12)\n\x10total_parameters\x18\x08\x20\x01(\x03R\
    \x0ftotalParameters\x12&\n\x0ftotal_float_ops\x18\x0e\x20\x01(\x03R\rtot\
    alFloatOps\x124\n\x06shapes\x18\x0b\x20\x03(\x0b2\x1c.tensorflow.TensorS\
    hapeProtoR\x06shapes\x12U\n\x0cinput_shapes\x18\x10\x20\x03(\x0b22.tenso\
    rflow.tfprof.GraphNodeProto.InputShapesEntryR\x0binputShapes\x12=\n\x08c\
    hildren\x18\x0c\x20\x03(\x0b2!.tensorflow.tfprof.GraphNodeProtoR\x08chil\
    dren\x1a\\\n\x10InputShapesEntry\x12\x10\n\x03key\x18\x01\x20\x01(\x05R\
    \x03key\x122\n\x05value\x18\x02\x20\x01(\x0b2\x1c.tensorflow.TensorShape\
    ProtoR\x05value:\x028\x01\"\xb4\x07\n\x13MultiGraphNodeProto\x12\x12\n\
    \x04name\x18\x01\x20\x01(\tR\x04name\x12\x1f\n\x0bexec_micros\x18\x02\
    \x20\x01(\x03R\nexecMicros\x126\n\x17accelerator_exec_micros\x18\x0c\x20\
    \x01(\x03R\x15acceleratorExecMicros\x12&\n\x0fcpu_exec_micros\x18\r\x20\
    \x01(\x03R\rcpuExecMicros\x12'\n\x0frequested_bytes\x18\x03\x20\x01(\x03\
    R\x0erequestedBytes\x12\x1d\n\npeak_bytes\x18\x10\x20\x01(\x03R\tpeakByt\
    es\x12%\n\x0eresidual_bytes\x18\x11\x20\x01(\x03R\rresidualBytes\x12!\n\
    \x0coutput_bytes\x18\x12\x20\x01(\x03R\x0boutputBytes\x12\x1e\n\nparamet\
    ers\x18\x04\x20\x01(\x03R\nparameters\x12\x1b\n\tfloat_ops\x18\x05\x20\
    \x01(\x03R\x08floatOps\x12*\n\x11total_exec_micros\x18\x06\x20\x01(\x03R\
    \x0ftotalExecMicros\x12A\n\x1dtotal_accelerator_exec_micros\x18\x0e\x20\
    \x01(\x03R\x1atotalAcceleratorExecMicros\x121\n\x15total_cpu_exec_micros\
    \x18\x0f\x20\x01(\x03R\x12totalCpuExecMicros\x122\n\x15total_requested_b\
    ytes\x18\x07\x20\x01(\x03R\x13totalRequestedBytes\x12(\n\x10total_peak_b\
    ytes\x18\x13\x20\x01(\x03R\x0etotalPeakBytes\x120\n\x14total_residual_by\
    tes\x18\x14\x20\x01(\x03R\x12totalResidualBytes\x12,\n\x12total_output_b\
    ytes\x18\x15\x20\x01(\x03R\x10totalOutputBytes\x12)\n\x10total_parameter\
    s\x18\x08\x20\x01(\x03R\x0ftotalParameters\x12&\n\x0ftotal_float_ops\x18\
    \t\x20\x01(\x03R\rtotalFloatOps\x12B\n\x0bgraph_nodes\x18\n\x20\x03(\x0b\
    2!.tensorflow.tfprof.GraphNodeProtoR\ngraphNodes\x12B\n\x08children\x18\
    \x0b\x20\x03(\x0b2&.tensorflow.tfprof.MultiGraphNodeProtoR\x08children\"\
    \xe1\x01\n\x0bAdviceProto\x12H\n\x08checkers\x18\x01\x20\x03(\x0b2,.tens\
    orflow.tfprof.AdviceProto.CheckersEntryR\x08checkers\x1ac\n\rCheckersEnt\
    ry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12<\n\x05value\x18\x02\
    \x20\x01(\x0b2&.tensorflow.tfprof.AdviceProto.CheckerR\x05value:\x028\
    \x01\x1a#\n\x07Checker\x12\x18\n\x07reports\x18\x02\x20\x03(\tR\x07repor\
    tsb\x06proto3\
";

static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
    ::protobuf::parse_from_bytes(file_descriptor_proto_data).unwrap()
}

pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    file_descriptor_proto_lazy.get(|| {
        parse_descriptor_proto()
    })
}